ASP.NET HTTPHandler在预期的情况下不会抛出异常

时间:2010-06-17 02:11:49

标签: asp.net http httphandler

我有一个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语句上放置一个断点然后跳过它我可以看到发生异常。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

编辑:以下是一些可能的地方:

  • 如果使用内置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