1

ASP.Net でホストされているNancy Web サイトがあり、多数のカスタム ルートがあります。これらのルートには、ファイル パス (例: /path/to/xml_file.xml) のように見えるマッピングが含まれますが、ブラウザに表示される HTML ファイルに解決されます。ほとんどのファイルでは、これは正しく機能します。ただし、XML ファイル (および場合によっては他の MIME タイプ) を使用すると、IIS 8 Express から 406.0 HTTP エラーが発生し、それが明示的に示されます。

HTTP エラー 406.0 - 受け入れられません

ファイル拡張子がブラウザで受け入れられていないため、リソースを表示できません。

要求されたファイル拡張子でサポートされていない MIME タイプの Accept ヘッダーが含まれていたため、要求は拒否されました。

要求されたファイル拡張子の MIME 設定を確認して、この MIME タイプが受け入れられることを確認してください。

406 エラー ページのスクリーンショット

パスロジックを書き直さなくてもこのエラーが発生しないように、この検証をバイパスするための web.config 設定またはその他の手法はありますか? 私のGoogle検索は失敗しています。たとえば、 SO Answerからリンクされているこの IIS フォーラムの投稿を見つけました。

すべての要求を ASP.NET にマップし、ASP.NET の StaticFileHandler を使用して要求を処理します

ただし、投稿ではこれを行う方法について説明していません。また、適用されるようにも見えません。

編集:(上記のエラーページ画像を追加)

別のヒントとして、ナンシールートはフォームの明示的なビューを返します

return View["view_name", myModel];

したがって、コンテンツ ネゴシエーションをバイパスする必要があります。

4

2 に答える 2

3

それ自体は修正や回答ではありませんが、私の現在の回避策 (興味のある人向け) は、ルートを微調整して末尾のスラッシュを使用することです。例として:

"/path/to/xml_file.xml"   //  Still returns a 406.0 error
"/path/to/xml_file.xml/"  //  Works properly (notice the trailing slash)
于 2015-11-19T15:39:45.663 に答える
1

web.config ファイル内の静的コンテンツの MIME マッピングを変更する方法を示す Rackspace ナレッジ センターへのリンクを次に示します。

https://www.iis.net/configreference/system.webserver/staticcontent/mimemap

より詳細な MS からのこれもあります。

https://www.iis.net/configreference/system.webserver/staticcontent/mimemap

どちらも web.config ファイルのこのスタンザを特徴としています。

<configuration>
  <system.webServer>
    <staticContent>
      <remove fileExtension=".extension" />
      <mimeMap fileExtension=".extension" mimeType="application/example" />
    </staticContent>
  </system.webServer>
</configuration>

それが実際に406.0の問題を解決する方法なら...

于 2015-11-19T03:03:28.850 に答える