asp.net - tutorial - web api 2 route config
405 opciones de método no permitidas en asp.net web api controller? (1)
En sus handlers
después de <remove name="OPTIONSVerbHandler"/>
, agregue esto:
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS"
modules="IsapiModule" requireAccess="None"
scriptProcessor="C:/Windows/System32/inetsrv/asp.dll"
resourceType="Unspecified" />
Ver la respuesta en IIS secuestra la solicitud CORS Preflight OPTIONS .
O tal vez incluso solo esto:
<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS"
modules="ProtocolSupportModule" requireAccess="None" />
Si eso no funciona, algo que global.asax
siguiente en tu global.asax
u otro código:
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, POST, PUT, 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();
}
}
Tengo este problema muy común donde dice que el método no está permitido ( OPTIONS
) para una solicitud GET
. Recibo el siguiente error cada vez que realizo una llamada API. Tengo esta configuración en 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>
Intenté usar Asp.Net.WebApi.Cors
y hacer cumplir CORS globalmente usando EnableCors()
para todos los encabezados y métodos de origen y eso tampoco funcionó.