【问题标题】:Why isn't my HttpHandler being called?为什么我的 HttpHandler 没有被调用?
【发布时间】:2023-03-22 12:48:01
【问题描述】:

好的,我现在问这个感觉就像个 nincompoop。

我写了一个简单的空白 HttpHandler 并在 ProcessRequest 方法中放置了一个断点,然后在我的 web.config 中编写了这个样板注册标记。

<system.web>
    <httpHandlers>
      <add path = "*.jpg" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false" />
      <add path = "*.jpeg" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false" />
      <add path = "*.png" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false" />
      <add path = "*.bmp" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false" />
      <add path = "*.gif" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false" />
      <add path = "*.ico" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false" />
      <add path = "*.css" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false"  />
      <add path = "*.js" verb = "*" type="MyProject.BaseServices.StaticAssetHttpHandler, MyProject.BaseServices" validate = "false" />
      <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/>
    </httpHandlers>

【问题讨论】:

  • 我的机器上没有 IIS。我正在使用 Visual Studio 的内部 Web 服务器在本地运行该网站。
  • 安装 IIS Express 并对其进行测试。 ASP.NET Web 开发服务器在这些方面与 IIS 差别太大了。

标签: asp.net httphandler


【解决方案1】:

我发现了问题。我在 MVC 项目的 Views 文件夹中的 Web.config 中创建了条目。显然,我尝试使用 HttpHandler 提供的资产不在 Views 文件夹中。

我将条目移动到项目的根 Web.config 并开始工作。

【讨论】:

    【解决方案2】:

    这将取决于您运行的 Web 服务器以及您安装的内容。如果您右键单击您的项目和属性并选择“Web”选项卡,您将看到“使用 Visual Studio 开发服务器”或“使用本地 IIS 服务器”的单选按钮以及 IIS Express 的复选框(这是项目的默认设置)在我和我同事的机器上)。

    如果您使用 Visual Studio 开发服务器,您的配置应该可以工作。如果正在使用 IIS Express,则需要在不同的位置注册处理程序,并稍微更改属性(删除 validate 并添加 name

    <system.webServer>
      <handlers>
        <add name="StaticJS" path = "*.js" verb = "*" type="AspNetWebFormsApplication.StaticAssetHttpHandler, AspNetWebFormsApplication"  />
      </handlers>
      ....
    </system.webServer>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-15
      • 1970-01-01
      相关资源
      最近更新 更多