3

大学のコースワーク用に 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>

これも違いはありませんでした。

あなたが与えることができるどんな助けも大歓迎です (私は本当にこのアプリケーションのためにホストを移動する必要はありません!)

4

3 に答える 3

1

私はこれを見つけました:http://forums.iis.net/t/1163441.aspx

そのフォーラム投稿の外観から、動詞のPUTとDELETEを機能させるには、WebDAVを完全にアンインストールする必要があります。残念ながら、これは共有ウェブホスティングシナリオでは役に立ちません。

于 2012-05-03T07:26:53.390 に答える
0

私にとっては、それは何か違うものでした。サイト フォルダーに移動し、フォルダーのセキュリティ タブを開き、[編集] ボタンを押してグループまたはユーザー名のアクセス許可を変更し、IIS 8 サイトからサイトを見つけて、フル コントロールのアクセス許可を与える必要がありました。

于 2016-06-08T11:24:35.097 に答える