11

我想注册一个 HttpHandler 以包含根文件夹的所有子文件夹,无论它们嵌套多远。我本来希望下面代码的行为可以做到这一点,但实际上它只包含直接在根文件夹中的项目。

<httpHandlers>
  <add verb="*" path="root/*" type="HandlerType, Assembly" />
</httpHandlers>

我当然可以按如下方式注册以包含第二层的任何内容,但是还没有遇到一种方法来说出根目录下的任何内容。

<httpHandlers>
  <add verb="*" path="root/*/*" type="HandlerType, Assembly" />
</httpHandlers>

这是困扰我很长一段时间的事情,我很想听听一个简单的解决方案。

我想澄清一下,当我说“根”时,我并不是指应用程序的根,也不一定有兴趣将应用程序中的所有请求发送到要处理的模块。

4

4 回答 4

22

您不需要单独的 web.config。在主 web.config 中使用 <location> 元素:

<!-- Configuration for the "root" subdirectory. -->
<location path="root">
  <system.web>
    <httpHandlers>
      <add verb="*" path="root" type="HandlerType, Assembly"/>
    </httpHandlers>
  </system.web>
</location>
于 2011-07-17T21:18:25.180 回答
6

您可以使用 path="*" 在此“根”文件夹中创建 web.config

于 2009-10-09T13:28:47.097 回答
0

也许你应该使用 HttpModule 而不是 HttpHandler。

于 2009-04-03T09:27:01.943 回答
0

您可以创建一个 http模块来检查每个传入请求的 url。如果请求 url 位于您希望处理程序处理的任何文件夹中,它会执行以下操作:

  • 将完整的原始 url 放入 Context.Items
  • 将请求路径更改为处理程序文件夹正下方的某个虚拟值,与处理程序的配置匹配。

现在将调用处理程序,它会在请求中找到虚拟 url。它忽略此 url,并处理它将在 Context.Items 中找到的实际 url。

于 2015-02-05T21:33:48.960 回答