2

我正在使用IHttpModule重写其下托管的 WCF 服务的 URL。在 IIS 中,这看起来像:

在此处输入图像描述

重写模块位于应用程序中。它接受如下 URL:

(1) http://host.com/root/r/users/user.1

并将其重写为:

(2) http://host.com/root/rest/users/user.1

然后将请求“转发”到其余的WCF 服务。问题是,其余应用程序最终使用 StaticFile 处理程序处理user.1,我得到了 404。但是,如果我只是直接访问 URL (2)不是通过重写模块,它可以正常工作!

如果写入的 URL 不包含扩展名,则可以通过重写模块正常工作:

(3) http://host.com/root/rest/users/all

为什么 StaticFile 处理程序在我重写 URL 时才启动,我该如何停止它?

4

1 回答 1

1

首先,您是否尝试过使用 IIS 7 的内置重写模块?

IIS7 URL 重写

您的问题在“转发”周围有引号,因此您可能有 Microsoft 提供的模块无法处理的特殊需求。如果是这样,请忽略该建议。

其次,您应该考虑在根应用程序和虚拟目录中查看 IIS 的 Handler-Mappings 部分。这是 technet 上的冗长链接,但如果您更喜欢该路线,也可以在 web.config 中设置处理程序映射:

IIS 中的处理程序映射

IIS 7 和 web.config 映射说明

于 2013-07-29T18:42:38.017 回答