【问题标题】:ASP.NET HTTPHandler not throwing exception when one is expectedASP.NET HTTPHandler 在预期时不会抛出异常
【发布时间】:2010-06-17 02:11:48
【问题描述】:

我有一个 HttpHandler 类(实现 IHttphandler),其中为 web.config 中的处理程序定义的路径是 *.jpg。我在我的页面中请求一个 Jpg 图像。在 HTTP 处理程序中,我正在写入文件系统中的文件。错误地我试图写入一个不存在的目录。这应该会引发异常,但执行会继续进行。当然没有写入文件。但是如果我给一个正确的目录,文件就会被正确写入。HttpHandler Exceptions有什么特别之处吗? 查看部分代码

 public void ProcessRequest(HttpContext context){

        File.WriteAllLines(context.Request.ApplicationPath+@"\"+"resul.log",new string[]{"Entered JPG Handler"});

如果我在 File.WriteAllLines 语句上放置一个断点,然后跳过它,我可以看到发生了异常。

【问题讨论】:

    标签: asp.net http httphandler


    【解决方案1】:

    Request.Application 返回应用程序在服务器上的虚拟应用程序根路径。例如:“/YourApp”,而不是“C:\inetpub\wwwroot\YourApp”。

    可能发生的情况是 File.WriteLine(...) 实际上将文件写入某处,可能与您的 Web 服务器进程位于同一文件夹中。

    编辑:这里有一些可能需要检查的地方:

    • 如果使用内置的 VS2008 网络服务器

      C:\Program Files (x86)\Common Files\microsoft shared\DevServer\9.0

    • 如果使用内置的 VS2010 网络服务器

      C:\Program Files (x86)\Common Files\microsoft shared\DevServer\10.0

    • 如果使用 IIS

      C:\Windows\System32\inetsrvC:\Windows\SysWOW64\inetsrv

    【讨论】:

      【解决方案2】:

      ASP.NET 可能只会拦截 .aspx 等 ASP.NET 文件扩展名,而不处理其他类型的内容(即,您的 jpeg 可能会被完全跳过)。

      These are the regular file extensions mapped to ASP.NET for processing.

      您可能必须将 IIS 中的其他文件扩展名(如 .jpeg、.jpg 等)映射到 ASP.NET 处理器 - This Microsoft article tells how

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-22
        • 1970-01-01
        相关资源
        最近更新 更多