使用默认处理程序通过 .NET 实现 REST
我正在使用 .NET 创建 REST 服务,并使用通用处理程序 Default.ashx 来处理传入请求。这允许我使用“http://rest/test”之类的方法访问服务,不会出现问题。但是,当添加文件扩展名时,IIS 不再重定向请求,而是查找文件。如何修改 web.config 以便像“http://foo/test.xml”和“http://foo/test.json”这样的 URL 请求也由 DefaultHandler.ashx 处理?我以前做过这个,所以知道它是可能的,但不记得配置。
I am creating a REST service using .NET and have used a generic handler, Default.ashx, to handle the incoming request. This allows me to access the service using methods like "http://rest/test" without issue. But when a file extension is added IIS no longer redirects the request but instead looks for a file. How can the web.config be modified so that URL request like "http://foo/test.xml" and "http://foo/test.json" are also handled by the DefaultHandler.ashx? I have done this before so know its possible but cannot remember the configuration.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以在我的 HttpClone 应用的 web.config 中查看相关示例。它的要点涉及删除您不想要的扩展的处理程序,如下所示:
这表示对除“/favicon.ico”之外的所有 URI 的所有请求使用自定义处理程序。如果您仍然需要使用“Default.ashx”,那么您将需要获取 ashx 类型的处理程序并将其映射到处理所有路径,就像这样。一般来说,虽然不需要 ashx 扩展处理程序,但只需实现 IHttpHandler 在任何程序集中并在上面的“type”属性中引用它。
请注意,cassini Web 服务器(VStudio 中的测试服务器)不会将默认目录“/”映射到您的处理程序。要修复 cassini 的此问题,您需要存在一个 default.aspx 文档(尽管它可以为空)。
注 2 - 上面的配置仅适用于集成模式,对于经典模式,概念是相同的,但设置位于不同的位置。
You can see an example of this in my HttpClone app's web.config. The gist of it involves removing handlers for the extensions you don't want like this:
This says to use a custom handler for all requests for all URIs except '/favicon.ico'. If you still need to use the 'Default.ashx' then you will need to get handler for the ashx type and map it to handle all paths just like this. Generally though there is no need for the ashx extension handler, just implement IHttpHandler in any assembly and reference it in the 'type' attribute above.
Note that the cassini web server (the test server in VStudio) will not map the default directory '/' to you're handler. To fix this for cassini you need a default.aspx document to exist (although it can be empty).
Note 2 - The configuration above is for integrated mode only, for classic mode the concept is the same but the settings are in a different location.