私のテストアプリケーションはWebアプリケーションAPIを使用してVs 2013 Webアプリケーションの空のテンプレートを使用して開発されました。Web API 2 - IIS7 POSTメソッド。 405 - 私は見つけることができるすべての可能な解決策を試した後に許可されません
これは私のルーティングの初期化は、次のようになります。これは私のweb.configファイルには、すべての提案の修正を含めた後のように見えるものである
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class TestController : ApiController
{
[Route ("Test")]
[HttpGet]
public string Get()
{
return "Response to get Request";
}
[Route("Test")]
[HttpPost]
public string Post(string text)
{
return string.Format("Received: '{0}'", text);
}
}
:これは私のコントローラのように見えるものである
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
config.EnableCors();
// Web API routes
config.MapHttpAttributeRoutes();
}
}
:
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1" />
<webServices>
<protocols>
<add name="HttpGet" />
<add name="HttpPost" />
<add name="HttpPut" />
<add name="HttpDelete" />
</protocols>
</webServices>
</system.web>
<system.webServer>
<handlers>
<remove name="WebDAV" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" />
<remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" />
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE,PATCH,OPTIONS" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
</handlers>
<security>
<requestFiltering>
<verbs allowUnlisted="false">
<add verb="GET" allowed="true" />
<add verb="POST" allowed="true" />
<add verb="DELETE" allowed="true" />
<add verb="PUT" allowed="true" />
</verbs>
</requestFiltering>
</security>
<modules runAllManagedModulesForAllRequests="true">
<remove name="WebDAVModule" />
</modules>
</system.webServer>
私はハンドラマッピングとリクエストフィルタリングを確認しました。 IISマネージャーとPOST動詞を使用するアプリケーションが有効になっています。
私はISSによって拒否された要求をトレースしていると、下図のように、私はManagedPipeLineHandlerは405エラーを設定していることが見つかりました:
ModuleNameをManagedPipelineHandler
通知128
はhttpStatus 405
HttpReasonメソッドが使用できない
HttpSubStatus 0
のErrorCode 0
ConfigExceptionInfo
通知EXECUTE_REQUEST_HANDLER
正常に完了した操作をエラーコード。 (0x0)
私の前提は私のアプリケーションにはないということです。私は正しいですか?
私はFiddlerを使用してテストしていますが、レスポンスヘッダーに「セキュリティ:」という名前のセクションがあり、「取得:GET」と表示されます。
この情報はどこから得られますか?この質問に対する答えは私を解決に導くかもしれません。
私は運がないとこれを修正しようと多くの時間を費やしました。どんなフィードバックも高く評価されます。