首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Web Http Put时内部服务器错误500

使用Web Http Put时内部服务器错误500
EN

Stack Overflow用户
提问于 2017-05-25 17:29:44
回答 2查看 5K关注 0票数 2

我正在为一家使用采摘过程的公司开发一个网络应用程序。

这个过程非常简单,我有一个包含一些信息的销售订单,我用其中的一些信息创建了一个挑选列表(例如:商品数量、总重量和销售订单的id )。

我总是会犯这样的错误

内部服务器错误

...when --我正在尝试使用PUT方法,创建一个拾取列表并将其添加到Web端的数据库中。

当我删除[HttpPost]时,错误更改为:

方法未找到

方法不允许

这是我的密码:

客户端

代码语言:javascript
复制
public async Task<bool> AddTarefa(ListasPicking listaPickingAdd) 
{
    String listaparaAdicionar = listaPickingAdd.idLista + ";" + listaPickingAdd.IDordemVenda + ";" + listaPickingAdd.peso + ";" + listaPickingAdd.itens;
    HttpResponseMessage response = await cliente.PutAsJsonAsync("api/ListasPicking/", listaparaAdicionar);

    return response.IsSuccessStatusCode;
}

Web侧控制器

代码语言:javascript
复制
//PUT: api/ListasPicking
[ResponseType(typeof (ListasPicking))]
[HttpPut]
public  IHttpActionResult PutLista ([FromBody] String lista)
{
    if(!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    String[] result = lista.Split(';');
    ListasPicking novaLista = new ListasPicking();
    novaLista.idLista=result[0];
    novaLista.IDordemVenda = result[1];
    string lista_peso_converttoDouble = result[2];
    novaLista.peso = Convert.ToDouble(lista_peso_converttoDouble);
    string lista_items_converttoInt = result[3];
    novaLista.itens = Convert.ToInt32(lista_items_converttoInt);

    primContext.ListasPickingGet.Add(novaLista);
    primContext.SaveChanges();

    return StatusCode(HttpStatusCode.Created);
}

我尝试了一些与这类问题相关的解决方案,以及相同的错误。

Web.config

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  https://go.microsoft.com/fwlink/?LinkId=301879
  -->
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="PrimaveraRest.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5.2" />
    <httpRuntime targetFramework="4.5.2" />
    <httpModules>
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" />
    </httpModules>
  </system.web>
  <system.webServer>
    <handlers>
      <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
      <remove name="OPTIONSVerbHandler" />
      <remove name="TRACEVerbHandler" />
  <!--    <remove name="WebDAV"/> -->

      <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <validation validateIntegratedModeConfiguration="false" />
    <modules>

     <!-- <remove name="WebDAVModule"/> -->
      <remove name="ApplicationInsightsWebTracking" />
      <add name="ApplicationInsightsWebTracking" type="Microsoft.ApplicationInsights.Web.ApplicationInsightsHttpModule, Microsoft.AI.Web" preCondition="managedHandler" />
    </modules>


  </system.webServer>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" culture="neutral" publicKeyToken="30ad4fe6b2a6aeed" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Optimization" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-1.5.2.14234" newVersion="1.5.2.14234" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-5.2.3.0" newVersion="5.2.3.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
    </compilers>
  </system.codedom>
  <applicationSettings>
    <PrimaveraRest.Properties.Settings>
      <setting name="Company" serializeAs="String">
        <value>DEMO</value>
      </setting>
      <setting name="User" serializeAs="String">
        <value>adminfixe</value>
      </setting>
      <setting name="Password" serializeAs="String">
        <value>123456</value>
      </setting>
    </PrimaveraRest.Properties.Settings>
  </applicationSettings>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>

更新

当我重建我的解决方案时,我会得到这样的台词:

文件\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1964,5):警告MSB3270:正在构建的项目的处理器体系结构"MSIL“与引用"Interop.ICrmDS800”、"x86“的处理器体系结构不匹配。这种不匹配可能导致运行时失败。请考虑通过Configuration更改项目的目标处理器体系结构,以便在项目和引用之间对处理器体系结构进行调整,或者使用与项目目标处理器体系结构相匹配的处理器体系结构来依赖引用。

会是问题所在吗?Interop.dll是我在项目中包含的一个文件,用于使用外部程序获取有关销售订单的信息。

溶液

在"ListaPicking“模型中缺少键注释,而我传递的是一个具有默认值的DateTime变量.我只是换到了DateTime.Today,现在它开始工作了:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-25 19:07:25

你可以把整个模型

代码语言:javascript
复制
public async Task<bool> AddTarefa(ListasPicking listaPickingAdd) {

    var response = await cliente.PutAsJsonAsync("api/ListasPicking/", listaPickingAdd);

    return response.IsSuccessStatusCode;        
}

并以同样的方式接受它,而不是解构和重建它。

代码语言:javascript
复制
[ResponseType(typeof (ListasPicking))]
[HttpPut]
public  IHttpActionResult PutLista ([FromBody] ListasPicking novaLista) {
    if(!ModelState.IsValid) {
        return BadRequest(ModelState);
    }

    primContext.ListasPickingGet.Add(novaLista);
    primContext.SaveChanges();

    return StatusCode(HttpStatusCode.Created);
}
票数 1
EN

Stack Overflow用户

发布于 2017-05-25 17:44:11

调用PutAsJsonAsync,但当非json字符串需要表示json的字符串时,则将其作为数据参数传递。

从文件中:

将PUT请求作为异步操作发送到指定的Uri,给定值序列化为JSON。

要使它工作,请调用PutAsync

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44186436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档