asp.net web api控制器中不允许405个方法选项?
发布时间:2020-12-16 03:31:23 所属栏目:asp.Net 来源:网络整理
导读:我有这个非常常见的问题,它说GET请求的方法不允许(OPTIONS).每当我进行API调用时,我都会收到以下错误.我在web.config中有这个设置: system.webServer modules remove name="WebDAVModule"/ /modules httpProtocol customHeaders add name="Access-Control-A
|
我有这个非常常见的问题,它说GET请求的方法不允许(OPTIONS).每当我进行API调用时,我都会收到以下错误.我在web.config中有这个设置:
<system.webServer>
<modules>
<remove name="WebDAVModule"/>
</modules>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*"/>
<add name="Access-Control-Allow-Headers" value="Origin,Authorization,X-Requested-With,Content-Type,Accept"/>
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS"/>
</customHeaders>
</httpProtocol>
<handlers>
<remove name="WebDAV"/>
<remove name="ExtensionlessUrlHandler-Integrated-4.0"/>
<remove name="OPTIONSVerbHandler"/>
<remove name="TRACEVerbHandler"/>
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/>
</handlers>
</system.webServer>
我尝试使用Asp.Net.WebApi.Cors并使用EnableCors()对所有原始标头和方法全局强制执行CORS,但这也无效. 解决方法
在< remove name =“OPTIONSVerbHandler”/>之后的处理程序中,添加以下内容:
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" requireAccess="None" scriptProcessor="C:WindowsSystem32inetsrvasp.dll" resourceType="Unspecified" /> 请参阅IIS hijacks CORS Preflight OPTIONS request的答案. 或者甚至可能只是这样: <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="ProtocolSupportModule" requireAccess="None" /> 如果这不起作用,那么将在global.asax或其他代码中添加以下内容: protected void Application_BeginRequest(object sender,EventArgs e)
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*");
if(HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods","GET,DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers","Content-Type,Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age","1728000" );
HttpContext.Current.Response.End();
}
}
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-3 – 在我的Controller中重构Switch语句
- asp.net – 检查会话是否已超时
- asp.net-mvc-4 – ASP.Net Web Api在POST上不绑定模型
- asp.net – 如何指定相对于站点根目录的路径?
- 动手造轮子:实现一个简单的依赖注入(零)
- ASP.NET Core使用微软官方类库实现汉字转拼音
- asp.net – 如何为同一个按钮运行客户端和服务器端代码?
- asp.net-mvc – MVC模型绑定:为什么我不能绑定到迭代器属性
- asp.net-mvc – 如何测试ASP MVC应用程序以获得基于用户的安
- asp.net-mvc – Visual Studio总是能够在源代码视图而不是设
