405 विधि विकल्प asp.net वेब एपीआई नियंत्रक में अनुमति नहीं है?



asp.net-mvc-4 asp.net-web-api (1)

मेरे पास यह बहुत ही सामान्य मुद्दा है जहां यह कहता है कि विधि GET अनुरोध के लिए अनुमति नहीं है ( OPTIONS )। जब भी मैं एक एपीआई कॉल करता हूं, मुझे निम्न त्रुटि मिलती है मेरे पास वेब। 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"/> बाद अपने handlers , इसे जोड़ें:

<add name="OPTIONSVerbHandler" path="*" verb="OPTIONS"
  modules="IsapiModule" requireAccess="None"
  scriptProcessor="C:\Windows\System32\inetsrv\asp.dll"
  resourceType="Unspecified" />

आईआईएस पर जवाब देखें कॉरस प्रीफलाइट ऑप्शन अनुरोध को अपहृत करता है

या शायद यह भी:

 <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, 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();
    }
}




cors