2011-12-19 16 views
2

.NETを使用してRESTサービスを作成していて、着信要求を処理するために汎用ハンドラーDefault.ashxを使用しています。これにより、問題なく "http:// rest/test"のようなメソッドを使用してサービスにアクセスできます。しかし、ファイル拡張子が追加されると、IISは要求をリダイレクトせず、代わりにファイルを探します。 "http://foo/test.xml"や "http://foo/test.json"のようなURLリクエストもDefaultHandler.ashxによって処理されるようにweb.configをどのように変更できますか?私はそれを可能にしていることを知っているが、構成を覚えていないうちにこれをやった。デフォルトハンドラーを使用した.NETのREST

+0

IISのどのバージョンですか? – SLaks

+0

Windows 2008 R2上のIIS 7 – user1106748

答えて

1

私のHttpCloneアプリのweb.configでこれの例を見ることができます。その要点は、あなたがこのようにしたくない拡張子のハンドラを除去することを含む:

<system.webServer> 
... 
<handlers accessPolicy="Read, Script"> 
    <clear /> 
    <add name="Favorite-Icon" path="/favicon.ico" verb="GET,HEAD" modules="StaticFileModule" resourceType="File" requireAccess="Read" /> 
    <add name="HttpClone" path="*" verb="GET,HEAD,POST,DEBUG" type="Namespace.MyCustomHandler, AssemblyName" resourceType="Unspecified" requireAccess="Script" preCondition="integratedMode" /> 
</handlers> 

これは「/favicon.ico」を除くすべてのURIのためのすべての要求のためにカスタムハンドラを使用することを言います。 'Default.ashx'を使用する必要がある場合は、ashx型のハンドラを取得し、このようにすべてのパスを処理するようにマップする必要があります。一般的に、ashx拡張ハンドラは必要ありませんが、IHttpHandlerを実装し、上記の 'type'属性で参照してください。

cassiniウェブサーバー(VStudioのテストサーバー)は、デフォルトのディレクトリ '/'をハンドラにマップしないことに注意してください。これを修正するには、default.aspxドキュメントが存在する必要があります(空でも構いませんが)。

注2 - 上記の設定は、統合モードのみです。クラシックモードのコンセプトは同じですが、設定は異なる場所にあります。

関連する問題