1

我想在 ASP.NET 中实现一个宁静的服务。我希望它与 .Net 2.0 和 IIS 5+ 兼容。我被限制不使用 ASP.NET MVC 或 REST 入门工具包。通过在互联网上阅读,我了解到它可以使用 HTTPHandlers 来实现。问题是,请求将作为 POST 请求进来。我希望 URL 像:

http://abc.com/MyService/MyMethod1/http://abc.com/MyService/MyMethod2/

有什么解决方法吗?

谢谢, 瓦米普

4

3 回答 3

1

如果您可以只允许限制 IIS 7.0 及更高版本,您可以使用 URL Rewrite http://www.iis.net/download/URLRewrite很容易地做到这一点。

请问为什么需要支持IIS 5+?这是一项已有 11 年历史的技术,希望人们能够摆脱这些平台,转而使用更新的版本。另请记住,对其中一些平台的支持很快就会结束。

如果关注的是运行 Windows XP 的开发人员,我会指出 IIS Express 包含 7.5+ 版本的功能,并且适用于 Windows XP 及更高版本的所有平台。

于 2011-01-18T18:15:17.507 回答
1

您最好的选择是使用 URL 重写。这在 IIS5 中很重要。我知道的方法如下:

方法 1 - ISAPI 过滤器

这些是允许您操纵传入请求的低级模块。对其中之一进行编程非常麻烦且难以调试。如果你走这条路,你最好使用已经构建好的ISAPI_Rewrite

方法 2 - IHttpModule

这些是托管的 ASP.Net 模块,很容易从您的应用程序中添加/删除。同样,您最好使用像UrlRewriter.NET这样的预构建组件。使用其中之一的问题(正如 BrainLy 提到的那样)是您必须配置 IIS 5 以将所有传入请求映射到 ASP.Net,如下所示(链接):

  1. 打开 IIS 并导航到“主目录选项卡”</li>
  2. 选择“配置”</li>
  3. 单击“添加”并在“可执行文件”框中输入“C:\WINNT\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll”。对于文件扩展名,输入“.*”。最后,确保未选中“检查文件是否存在”。

需要注意的一件有趣的事情是 ASP.Net 本身就是一个 ISAPI 模块 :)

一旦您能够使用这些工具之一来操作 URL,您就可以轻松地重写 RESTful url 以由您的 default.aspx 页面(或您选择使用的任何处理程序)处理。

于 2011-01-19T16:52:05.410 回答
0

我认为这将很难做到,因为 IIS 5 不允许您在 IIS 中没有一些额外配置的情况下处理非 ASP.NET 文件扩展名。这意味着您仅限于以 .aspx 等结尾的 URL。要处理示例中的 URL,您需要映射 ASP.NET 以处理 IIS 中的所有 URL,实现某种类型的 URL 重写,或引入某种 hacky 404 重定向.

一旦你有了正确的映射,你就可以连接一个IHttpHandler,但是你必须自己解析传入的请求来确定哪个是/MyService/MyMethod1/,哪个是/MyService/MyMethod2/。如果您的方法很简单,那么使用正则表达式很容易做到这一点。

您应该从一个像这样的简单处理程序开始。

于 2011-01-18T16:27:40.567 回答