2011-12-19 12 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 - 上述配置仅适用于集成模式,对于经典模式,概念相同,但设置位于不同位置。

相关问题