jay*_*vee 5 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();
Run Code Online (Sandbox Code Playgroud)
API
[Route("api/claim/search")]
[System.Web.Http.AcceptVerbs("GET")]
[System.Web.Http.HttpGet]
public IEnumerable<ClaimInfo> Get([FromUri] ClaimSearch obj_ClaimSearch)
{
//my code
}
Run Code Online (Sandbox Code Playgroud)
这种获取方法正在工作100%
开机自检
$.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 () {
}
});
Run Code Online (Sandbox Code Playgroud)
API
[Route("api/claim/savepatient")]
[System.Web.Http.AcceptVerbs("POST")]
[System.Web.Http.HttpPost]
public Guid SavePatient([FromBody]ClaimInfo claimInfo)
{
//my code
}
Run Code Online (Sandbox Code Playgroud)
这是我的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 }
);
}
Run Code Online (Sandbox Code Playgroud)
我已经在配置中应用了此网络服务器
<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>
Run Code Online (Sandbox Code Playgroud)
我遇到了类似的问题,它与捕获请求的函数的名称有关。由于某种原因,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
}
Run Code Online (Sandbox Code Playgroud)
请注意,我更改 [System.Web.Http.HttpPost]为 [System.Web.Http.HttpPost, ActionName("SavePatient")]
| 归档时间: |
|
| 查看次数: |
1030 次 |
| 最近记录: |