with tutorial started route parameter net asp asp.net asp.net-mvc-4 asp.net-web-api cors

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ó.