ASP.NET HTTPHandler 在预期异常时不会抛出异常

发布于 2024-09-06 03:21:17 字数 473 浏览 5 评论 0原文

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

 public void ProcessRequest(HttpContext context){

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

如果我在 File.WriteAllLines 语句上放置断点,然后单步执行它,我可以看到发生异常。

I have an HttpHandler class (implements IHttphandler) where the path defined for the handler in web.config is *.jpg. I am requesting a Jpg image in my page. Within the HTTP Handler I am writing to a file in the filesystem. By mistake I was trying to write to a non existant directory. This should have thrown an exception but the execution simply proceeds.Ofcourse no file is written. But if I give a proper directory the file is written correctly.Is there anything special about HttpHandler Exceptions.
See part of the code

 public void ProcessRequest(HttpContext context){

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

If I put a breakpoint on the File.WriteAllLines statement and then step over it I can see an exception occurring.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

薆情海 2024-09-13 03:21:17

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

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

编辑:以下是一些可能需要检查的地方:

  • 如果使用内置 VS2008 Web 服务器

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

  • 如果使用内置 VS2010 Web 服务器

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

  • 如果使用 IIS

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

Request.Application returns the application's virtual application root path on the server. For example: "/YourApp", as opposed to "C:\inetpub\wwwroot\YourApp."

What's likely happening is File.WriteLine(...) is actually writing the file somewhere, probably in the same folder as your web server process.

EDIT: Here's some of the likely places to check:

  • if using built-in VS2008 web server

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

  • if using built-in VS2010 web server

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

  • if using IIS

    C:\Windows\System32\inetsrv or C:\Windows\SysWOW64\inetsrv

唱一曲作罢 2024-09-13 03:21:17

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

这些是映射到 ASP.NET 进行处理的常规文件扩展名

您可能需要将 IIS 中的其他文件扩展名(如 .jpeg、.jpg 等)映射到 ASP.NET 处理器 - 这篇 Microsoft 文章介绍了具体操作方法

ASP.NET might only be intercepting ASP.NET file extensions like .aspx and not processing other types of content (i.e. maybe your jpegs are being skipped altogether).

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

You might have to map other file extensions (like .jpeg, .jpg, etc) in IIS to the ASP.NET processor - This Microsoft article tells how.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文