大学のコースワーク用に MVC Web Api を作成しました。これは、開発マシン (VS11 を実行) で期待どおりに動作します。
ただし、アプリケーションを123regの Web サーバーにデプロイすると、GET および POST 以外の HttpVerbs がアプリケーションにまったく到達しないように見え、最初は 401 Not Authorized 応答が返されました。ただし、ここで提案されているように「WebDAV」モジュールをオフにした後、これらの 401 は 405 Method not allowed になりました。この場合、ハンドラーとモジュールの両方を無効にすると、アプリケーションがまったく起動しなかったため、ハンドラーのみを無効にしました (スタックトレースなしのエラー 500 [カスタム エラーはオフ])。
フォーム メンバーシップ プロバイダーを利用して API に認証機能を追加する予定ですが[Authorise]
、401 が表示され始めたときにコードから属性を削除しました。
123Reg の共有ホスティング上のアプリケーションは、中程度の信頼で実行されます。
私は 123Reg サポートと連絡を取り合っており、彼らはある程度役に立ちましたが、それ以上は助けられないと判断しました (以下に詳述するように HttpHandlers を追加するよう提案されました) (明らかに、Web デザイナーに相談する必要があります...)
私が試したこと:
[AllowAnonymous]
コントローラーやアクションに属性を追加しましたが、効果がありません。
web.config 属性を追加して、authorization
すべての動詞とパスをすべてのユーザーに許可し、認証されているかどうかを確認しました。
<authorization>
<allow users="*" />
<allow users="?" />
<allow verbs="*" users="*" />
<allow verbs="*" users="?" />
</authorization>
追加しました(123Regの提案による):
<system.webServer>
<handlers>
<remove name="WebDAV" />
<add name="PUTVerbHandler" path="*" verb="PUT" modules="ProtocolSupportModule" resourceType="Unspecified" />
<add name="DELETEVerbHandler" path="*" verb="DELETE" modules="ProtocolSupportModule" resourceType="Unspecified" />
</handlers>
</system.webServer>
401 の応答ではなく 405 の応答を受け取るようになったため、これは一歩前進したように見えますが、これ以上前進することはできません。さらに、次のことも追加しました。
<httpHandlers>
<add verb="*" path="*" type="System.Web.Mvc.MvcHttpHandler"/>
</httpHandlers>
これも違いはありませんでした。
あなたが与えることができるどんな助けも大歓迎です (私は本当にこのアプリケーションのためにホストを移動する必要はありません!)