2

私はこのルートを持っています:

file {FileId} / {name}

nameドットが含まれていない限り、完全に機能します。

たとえば、次のように機能します。

file1 / blah、file90 /foo-

しかし、そうではありません:

file1 / blah.doc

この場合、私が得るのは404 errorblah.docルーティングシステムを使用する代わりに、実際のファイルを検索するようです。

この問題は、実稼働サーバーでのみ発生します。私も試しました

httpRuntime RelaxedUrlToFileSystemMapping = "true"

しかし、それは役に立ちませんでした。

4

1 に答える 1

1

「.」の後のすべて ファイル拡張子です。その拡張機能が ASP.NET にマップされていない場合、ASP.NET ハンドラーに渡されません。IIS は代わりに静的ファイルを探します。そのため、ケース (web.config) のハンドラーを追加する必要があります。そうすれば、ルートがリクエストをキャッチできるようになります。

<validation validateIntegratedModeConfiguration="false" />
   <handlers>
      <add name="FileHandlerDot" verb="GET" path="file*/*.*" type="System.Web.Mvc.MvcHttpHandler, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
   </handlers>
</validation>
于 2012-09-01T02:47:34.023 に答える