Я пытаюсь ограничить, насколько большой файл может загрузить пользователь на определенной странице. Я сделал это с помощью web.config
вроде этого:Как отображать предупреждение Javascript вместо ошибки на желтой странице
<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()
, основанный на принятом ответе от here, с частью JavaScript на основе this.
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();
}
}
}
Наконец, я также попытался следующий код в самом пользовательском элементе управления (который находится в VB.NET
), на основе принятого ответа от this:
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. Это можно сделать?
вам просто нужно проверить размер файла .. Если он превышает этот размер, вам следует показать сообщение с предупреждением, которое довольно просто .. –