ユーザーが特定のページにアップロードできるファイルのサイズを制限しようとしています。私はこれをweb.config
次のように使用して行いました:
<location path="SubSection/TestPage">
<system.web>
<httpRuntime maxRequestLength="2048" />
</system.web>
</location>
ただし、このエラーが発生すると、ユーザーは ASP.NET のイエロー エラー ページのいずれかに移動します。カスタム エラー ページを作成できることがわかったので調べてみましたが、それでもブラウザのリダイレクトが必要です。
これは、ユーザーが現在表示しているページから移動せずに、大きすぎるファイルをアップロードしようとしていることをユーザーに知らせるためのものです。この TestPage が黄色のエラー ページにリダイレクトされるのを防ぎ、代わりに何らかの JavaScript ポップアップを表示することはできますか?
Application_Error()
ファイル内のメソッドでエラーを処理しようとしましたglobal.asax
が、残念ながら、このメソッドで何をしても、このメソッドが終了すると常にリダイレクトされるようです。このページから JavaScript ポップアップを表示しようとしても成功しませんでしたが、これはファイルで実際に可能であると理解しているglobal.asax
ため、単純に何か間違ったことをしていると思います。
これは、ここApplication_Error()
から受け入れられた回答に基づいて、 thisに基づく JavaScript 部分を使用して、処理するための私のコードです。
void Application_Error(object sender, EventArgs e)
{
int TimedOutExceptionCode = -2147467259;
Exception mainEx;
Exception lastEx = Server.GetLastError();
HttpUnhandledException unhandledEx = lastEx as HttpUnhandledException;
if (unhandledEx != null && unhandledEx.ErrorCode == TimedOutExceptionCode)
{
mainEx = unhandledEx.InnerException;
}
else
mainEx = lastEx;
HttpException httpEx = mainEx as HttpException;
if (httpEx != null && httpEx.ErrorCode == TimedOutExceptionCode)
{
if(httpEx.StackTrace.Contains("GetEntireRawContent"))
{
System.Web.UI.Page myPage = (System.Web.UI.Page)HttpContext.Current.Handler;
myPage.RegisterStartupScript("alert","<script language=javascript>alert('The file you attempted to upload was too large. Please try another.');</script" + ">");
Server.ClearError();
}
}
}
最後に、 thisVB.NET
からの受け入れられた回答に基づいて、ユーザー コントロール自体 ( にあります) で次のコードも試しました。
Private Sub Page_Error(ByVal sender As Object, ByVal e As EventArgs)
Dim err As Exception = Server.GetLastError()
Dim cs As ClientScriptManager = Page.ClientScript
If (cs.IsStartupScriptRegistered(Me.GetType(), "testJS") = False)
Dim cstext1 As String = "alert('" & err.Message & "');"
cs.RegisterStartupScript(Me.GetType(), "testJS", cstext1, True)
End If
End Sub
残念ながら、このコードはまったく呼び出されていないようです。
繰り返しますが、これは、たとえば、ユーザーが少し大きすぎるファイルをアップロードする際の単純なミスを処理するためのものです。リダイレクトして、ユーザーが元のページで行った可能性のある他の操作を失いたくありません。単純な JavaScript 警告ボックスを表示したいだけです。これはできますか?