JQuery删除对C#API的请求->;HTTP状态代码405
我在一台服务器上有一个用C#编写的WebApi,在另一台服务器上有一个试图使用JQuery发送删除请求的网页:JQuery删除对C#API的请求->;HTTP状态代码405,c#,asp.net-web-api,C#,Asp.net Web Api,我在一台服务器上有一个用C#编写的WebApi,在另一台服务器上有一个试图使用JQuery发送删除请求的网页: <script> $(function () { $("#Save").click(function () { $.ajax({ type: "DELETE", url: "https://chad-test4.clas.uconn.edu/api/Employees/1", d
<script>
$(function () {
$("#Save").click(function () {
$.ajax({
type: "DELETE",
url: "https://chad-test4.clas.uconn.edu/api/Employees/1",
dataType: "json",
success: function (data) {
console.log("Response recieved");
console.log("Success: " + JSON.stringify(data));
},
error: function() {
console.log("Failed")
}
// data: {"id": 1 }
});
});
});
</script>
我在控制台中收到的响应是:
XMLHttpRequest cannot load https://chad-test4.clas.uconn.edu/api/Employees/1.
Invalid HTTP status code 405
create.htm:41 Failed
在对该主题进行研究之后,我将Web.Config标题更改为建议的文本:
<system.webServer>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule"/>
<remove name="FormsAuthentication" />
</modules>
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
我仍然得到同样的回应。任何建议都将受到欢迎,405代码与“HTPP错误请求”相关,这是REST API的错误,否,jQuery 我向您推荐以下技巧:
我建议您将问题移至C#tag。它与“HTPP坏请求”相关的405代码,这是REST API的错误,否,jQuery 我向您推荐以下技巧:
我建议您将问题移至C#标记。HTTP 405状态代码不是“错误请求”,而是“不允许使用方法” 在WebApiConfig.cs文件中,为控制器配置的路由应在“操作”属性中指定控制器将接受的HTTP谓词。确保javascript中的type:设置为路由操作中匹配的HTTP谓词 控制器中的方法可能还应该具有一个描述it服务动词的属性,例如[HttpPost]或[HttpDelete] 例如,这里是一个小Api的路由配置
public static class WebApiConfig
{
/// <summary>
/// Registers the WebAPI routes.
/// </summary>
/// <param name="config">The configuration.</param>
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "SOAInboundApi",
routeTemplate: "api/{controller}",
defaults: new { controller = "SOAInbound", action = "Post", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "LogFileApi",
routeTemplate: "api/{controller}",
defaults: new { controller = "LogFile", action = "Get", id = RouteParameter.Optional }
);
}
}
公共静态类WebApiConfig
{
///
///注册WebAPI路由。
///
///配置。
公共静态无效寄存器(HttpConfiguration配置)
{
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
名称:“SOAInboundApi”,
routeTemplate:“api/{controller}”,
默认值:new{controller=“SOAInbound”,action=“Post”,id=RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
名称:“LogFileApi”,
routeTemplate:“api/{controller}”,
默认值:新建{controller=“LogFile”,action=“Get”,id=RouteParameter.Optional}
);
}
}
我有一个默认设置,它只是显示一个静态视图,解释如何使用我的Api,一个接受HTTP Post的SOAInbound,以及一个接受HTTP Get的日志文件。HTTP 405状态代码不是“错误请求”,而是“不允许使用方法” 在WebApiConfig.cs文件中,为控制器配置的路由应在“操作”属性中指定控制器将接受的HTTP谓词。确保javascript中的type:设置为路由操作中匹配的HTTP谓词 控制器中的方法可能还应该具有一个描述it服务动词的属性,例如[HttpPost]或[HttpDelete] 例如,这里是一个小Api的路由配置
public static class WebApiConfig
{
/// <summary>
/// Registers the WebAPI routes.
/// </summary>
/// <param name="config">The configuration.</param>
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "SOAInboundApi",
routeTemplate: "api/{controller}",
defaults: new { controller = "SOAInbound", action = "Post", id = RouteParameter.Optional }
);
config.Routes.MapHttpRoute(
name: "LogFileApi",
routeTemplate: "api/{controller}",
defaults: new { controller = "LogFile", action = "Get", id = RouteParameter.Optional }
);
}
}
公共静态类WebApiConfig
{
///
///注册WebAPI路由。
///
///配置。
公共静态无效寄存器(HttpConfiguration配置)
{
config.Routes.MapHttpRoute(
名称:“DefaultApi”,
routeTemplate:“api/{controller}/{id}”,
默认值:新建{id=RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
名称:“SOAInboundApi”,
routeTemplate:“api/{controller}”,
默认值:new{controller=“SOAInbound”,action=“Post”,id=RouteParameter.Optional}
);
config.Routes.MapHttpRoute(
名称:“LogFileApi”,
routeTemplate:“api/{controller}”,
默认值:新建{controller=“LogFile”,action=“Get”,id=RouteParameter.Optional}
);
}
}
我有一个默认设置,它只是显示了一个静态视图来解释如何使用我的Api,一个接受HTTP Post的SOAInbound和一个接受HTTP Get的日志文件。所以在这里?:config.Routes.maphttroute(名称:“DefaultApi”,routeTemplate:“Api/{controller}/{id}”,默认设置:new{id=RouteParameter.Optional});我不确定要在这里更改什么,以便将action属性添加到new,例如new={controler=“NameofYourController”,action=“Delete”,id=RouteParameter.Optional}然后我是否需要将控制器从HttpResponseMessage更改为ActionResult?我认为这不会有什么区别,因为您没有使用返回值。因此,在这里?:config.Routes.MapHttpRoute(名称:“DefaultApi”,routeTemplate:“api/{controller}/{id}”,默认值:new{id=RouteParameter.Optional});我不确定要在这里更改什么,以便将action属性添加到new,例如new={controler=“NameofYourController”,action=“Delete”,id=RouteParameter.Optional}然后我是否需要将控制器从HttpResponseMessage更改为ActionResult?我认为这不会有什么区别,因为您没有使用返回值。