iis - web api get 正在工作,但在 iis 中发布后发布和删除不起作用

标签 iis asp.net-web-api

我已经挣扎了4个小时,但仍然没有得到任何解决方案。我已经应用了一些修改,但我的帖子和删除 api 仍然返回错误 500。

获取 js

$.getJSON(API_URL + 'api/claim/search', params).done(function (data) {
    myJsonObject = data;
    d.resolve(data);
});
return d.promise();

API
[Route("api/claim/search")]
[System.Web.Http.AcceptVerbs("GET")]
[System.Web.Http.HttpGet]
public IEnumerable<ClaimInfo> Get([FromUri] ClaimSearch obj_ClaimSearch)
{
    //my code
}

此 get 方法 100% 有效

发布 js
$.ajax({
    type: "POST",
    data: JSON.stringify(p[0]),
    url: API_URL + "api/claim/" + (editorPage === "resubmission" ? "saveresubmissionpatient": "savepatient"),
    contentType: "application/json",
    success: function (data) {

    },
    error: function () {

    }
});

API
[Route("api/claim/savepatient")]
[System.Web.Http.AcceptVerbs("POST")]
[System.Web.Http.HttpPost]
public Guid SavePatient([FromBody]ClaimInfo claimInfo)
{
    //my code
}

这是我的 WebApi.Config.cs
public static void Register(HttpConfiguration config)
{
    config.MapHttpAttributeRoutes();

    config.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{id}",
        defaults: new { id = RouteParameter.Optional }
    );

}

我已经在我的配置中应用了这个网络服务器的东西
<modules>
  <remove name="WebDAVModule" />
  <add type="DevExpress.Web.ASPxHttpHandlerModule, DevExpress.Web.v16.2, Version=16.2.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" name="ASPxHttpHandlerModule" />
</modules>
<handlers>
  <remove name="WebDAV" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
  <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
  <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
  <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />

</handlers>

最佳答案

我有一个类似的问题,它与捕获请求的函数的名称有关。出于某种原因,GET 函数会自动执行此操作,但 POST 并不总是这样做。您可以尝试像这样显式命名它,看看它是否也解决了您的问题:

[Route("api/claim/savepatient")]
[System.Web.Http.AcceptVerbs("POST")]
[System.Web.Http.HttpPost, ActionName("SavePatient")]
public Guid SavePatient([FromBody]ClaimInfo claimInfo)
{
    //my code
}

请注意,我更改了 [System.Web.Http.HttpPost][System.Web.Http.HttpPost, ActionName("SavePatient")]

关于iis - web api get 正在工作,但在 iis 中发布后发布和删除不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46093170/

相关文章:

asp.net - 如何导出 "IIS Express Development Certificate"到另一台电脑通过https连接本地IIS?

sharepoint - 如何将根网站重定向到网站集

asp.net - WCF 与 WebAPI 和 native 移动设备

c# - 如何将 DLL 引用添加到 .NET WebAPI 项目?

c# - WebRequest 在 ASP.NET 应用程序中失败并显示 "414 Request URI too long"

batch-file - 是否可以执行bat文件来停止远程服务器上的iis

iis - Windows 身份验证不适用于 IIS 7.5 中的本地主机地址

c# - 无法使用 Excel Power Query : invalid metadata? 连接到 OData v4 服务

c# - 如何在 C# 中的 https 调用中获取 header 值

asp.net-mvc - HTTP 错误 500.19 和错误代码 : 0x80070021