【问题标题】:How do I exclude things that match the specified path for an HttpHandler in ASP.Net?如何在 ASP.Net 中排除与 HttpHandler 的指定路径匹配的内容?
【发布时间】:2011-01-31 08:57:15
【问题描述】:

我知道,如果我想让对 MyPage.aspx 的请求转到名为 MyAssembly 的程序集中名为 MyHandler 的类,我可以将其添加到我的 web.config 文件中:

<configuration>
  <system.web>
    <httpHandlers>
      <add verb="*" path="MyPage.aspx" type="MyHandler, MyAssembly"/>
  </system.web>
</configuration>

这适用于(组成的)URL 上的任何 MyPage.aspx:www.mycoolsite.com/MyProject/[SomePathHere]/MyPage.aspx

如果我想为每个 MyPage.aspx 都这样做 除了 www.mycoolsite.com/MyProject/NoHandler/MyPage.aspx 该怎么办

有没有办法从处理程序中排除该路径?

【问题讨论】:

    标签: c# asp.net httphandler


    【解决方案1】:

    您可以将 web.config 放在定义不同处理程序的 NoHandler 文件夹中(如果您想提供 404 样式等,则为 NotFound)。与您当前的web.config 格式相同,只需像处理程序一样只放置您想要覆盖的元素。

    如果您想在该目录中使用 404 覆盖,下面是一个示例:

    <configuration>
     <system.web>
      <httpHandlers>
       <remove verb="*" path="MyPage.aspx" type="MyHandler, MyAssembly"/>
       <add verb="*" path="MyPage.aspx" type="MySpecialHandler, MyAssembly"/>
      </httpHandlers>
     </system.web>
    </configuration>
    

    【讨论】:

    • 如果两个路径都匹配,什么决定了优先级?我的意思是,我保证&lt;add verb="*" path="NoHandler/MyPage.aspx" type="MySpecialHandler, MyAssembly"/&gt; 会胜过&lt;add verb="*" path="MyPage.aspx" type="MyHandler, MyAssembly"/&gt;
    • @Tim - 用一个例子更新了答案,还有一个删除选项可以用于你的案例:)
    • 感谢您的帮助,尼克。这个解决方案对我有用,除了我必须从删除中取出“类型”......否则它会给我一个错误。
    猜你喜欢
    • 1970-01-01
    • 2012-11-28
    • 2020-06-12
    • 1970-01-01
    • 2010-11-14
    • 1970-01-01
    • 2010-11-23
    • 2021-03-30
    • 2019-04-27
    相关资源
    最近更新 更多