gpt4 book ai didi

asp.net - 捕获 IIS 级别的错误以在 ASP.NET 中处理

转载 作者:行者123 更新时间:2023-12-05 01:34:08 24 4
gpt4 key购买 nike

我正在 IIS 7 上使用 C# 开发 ASP.NET 站点,但我希望得到一个也适用于 IIS 6 的答案。该网站的一部分功能是一次最多上传 5 张图片。我有一个很好的算法来调整上传到我的最佳尺寸和比例的图像的大小。

所以我唯一真正的大小限制是在初始上传期间。我修改了我的 web.config,将数据包限制从 4MB 提高到 32MB。在大多数情况下,这可以解决我的问题。

我的问题出现在用户尝试加载超过我的限制的极少数情况下。我可以提高限制,但用户总是有机会找到 5 个更大的文件。如果用户选择更大的文件,我的 try/catch 块不会处理错误。错误来自 IIS。

那么我怎样才能在 C# 代码中发现错误,我可以在其中修改我的 ASP.NET 界面以通知用户选择较小的文件而不是他们看到令人讨厌的错误屏幕?

最佳答案

当超过请求长度时,您可以访问异常。使用 HttpModule,并为 Error 事件添加处理程序。

异常类型为:System.Web.HttpUnhandledException (带有 InnerException 类型: System.Web.HttpException )。

要捕获此异常,请将其添加到您的 web.config 中:

<httpModules>
<add name="ErrorHttpModule" type="ErrorHttpModule"/>
</httpModules>

并将此类添加到您的 App_Code 文件夹中:
public class ErrorHttpModule : IHttpModule
{
private HttpApplication _context;

public ErrorHttpModule() {
}

private void ErrorHandler(Object sender, EventArgs e)
{
Exception ex = _context.Server.GetLastError();

//You can also call this to clear the error
//_context.Server.ClearError();
}

#region IHttpModule Members

public void Init(HttpApplication context)
{
_context = context;
_context.Error += new EventHandler(ErrorHandler);
}

public void Dispose()
{
}

#endregion
}

关于asp.net - 捕获 IIS 级别的错误以在 ASP.NET 中处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1989756/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com