2011-12-19 13 views
2

我使用.NET創建REST服務,並使用通用處理程序Default.ashx處理傳入請求。這允許我使用諸如「http:// rest/test」之類的方法訪問服務而沒有問題。但是,當添加文件擴展名時,IIS不再重定向請求,而是查找文件。 web.config如何修改,以便像http://foo/test.xml和http://foo/test.json這樣的URL請求也由DefaultHandler.ashx處理?我之前做過這件事,所以知道它可能但不記得配置。使用默認處理程序與.NET進行REST

+0

什麼版本的IIS? – SLaks 2011-12-19 21:47:03

+0

Windows 2008 R2上的IIS 7 – user1106748 2011-12-19 21:56:34

回答

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 web服務器(VStudio中的測試服務器)不會將缺省目錄'/'映射到您的處理程序。爲了解決這個卡西尼問題,你需要一個default.aspx文件來存在(雖然它可以是空的)。

注2 - 上述配置僅適用於集成模式,對於經典模式,概念相同,但設置位於不同位置。

相關問題