Как перенаправить на страницы ошибок ASP.NET, когда база данных Session Sql не работает - PullRequest
0 голосов
/ 26 июня 2018

У меня есть веб-сайт ASP.NET, который хранит сессии в SQL Server.Я специально отключил базы данных сеансов от работы, чтобы убедиться, что мои страницы ошибок показываются пользователям.

Мой Web.config:

 <system.webServer>
  <httpErrors errorMode="DetailedLocalOnly" existingResponse="Replace">
    <remove statusCode="404" subStatusCode="13" />
    <error statusCode="404" subStatusCode="13" prefixLanguageFilePath="" path="LargeFileError.aspx" responseMode="Redirect" />
      <remove statusCode="500" />
      <error statusCode="500" path="Error.aspx" responseMode="ExecuteURL"/>
  </httpErrors>
 </system.webServer>

 <system.web>
  <customErrors mode="On" defaultRedirect="/Error.aspx" redirectMode="ResponseRewrite">    
    <error statusCode="500" redirect="Error.aspx" />
  </customErrors>
</system.web>

Мой global.asax:

protected void Application_Error(object sender, EventArgs e)
        {
           Exception exception = Server.GetLastError();
             Response.Clear();
            Server.ClearError(); 
           Response.Redirect("Error.aspx");     
        }

Моя страница Error.aspx - это простая страница, в которой есть только локализованная строка.Следовательно, я не смогу сделать его html-страницей.

Я продолжаю получать эту ошибку:

"Основной поставщик не удалось открыть."

Вы можете сказать, что существует множество решений по переполнению стека для этой ошибки, но моя проблема здесь состоит в том, чтобы показать страницы ошибок (страница aspx, когда сессия db не работает), а не решить эту ошибку.

Даже когда я перехожу на страницу error.aspx напрямую, я получаю эту ошибку.Мне нужен способ сообщить Asp.Net и IIS, что мне не нужна информация о сеансе для этой конкретной страницы.

Как мне решить эту проблему и убедиться, что страница с моей ошибкой отображается.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Итак, я сделал следующее:

1) Измените Respose.redirect на Server.Transfer в Global.asax

2) Добавил этот параметр в директиву @Page of Error.aspx

EnableSessionState="false"

3) Мне также пришлось управлять Моим сайтом. Мастер (Error.aspx был дочерней страницей) прошел проверку Anti Xsrf, которая выдавала ошибку.

  if (Context.User != null)
                {
                    ViewState[AntiXsrfUserNameKey] = Context.User.Identity.Name ?? String.Empty;
                }
                else {
                    ViewState[AntiXsrfUserNameKey] = String.Empty;
                }
0 голосов
/ 26 июня 2018

В существующей строке подключения удалить «пользовательский экземпляр = true», и это работает.

подробности см. Здесь: https://blogs.msdn.microsoft.com/dataaccesstechnologies/2012/08/09/error-the-underlying-provider-failed-on-open-in-entity-framework-application/#comment-17785

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...