Ответ не доступен в этом контексте. Response.Write (ex.ToString ()); - PullRequest
0 голосов
/ 25 марта 2011

Я написал этот код в global.asax, следуя классическому коду. Каждый раз, когда я запускаю сайт, он показывает эту ошибку. После того, как я обновляю страницу, она переходит на правильную страницу. Я не понимаю, почему.

Ответ недоступен в этом контекст. Описание: необработанный исключение произошло во время выполнение текущего веб-запроса. Пожалуйста, просмотрите трассировку стека для более информация об ошибке и где он возник в коде.

Сведения об исключении: System.Web.HttpException: ответ недоступно в этом контексте.

Ошибка источника:

Line 26:         catch (Exception ex)
Line 27:         {
Line 28:             Response.Write(ex.ToString());
Line 29:         }
Line 30: 

void Application_Start(object sender, EventArgs e) 
{
    try
    {
        if (Roles.RoleExists("Administrators") == false)
            Roles.CreateRole("Administrators");
        if (Membership.FindUsersByName("ken").Count == 0)
        {
            Membership.CreateUser("ken", "123", "ken@jobpost.com");
            Roles.AddUserToRole("ken", "Administrators");
        }
        if (Membership.FindUsersByName("dan").Count == 0)
            Membership.CreateUser("dan", "123", "dan@jobpost.com");


    }
    catch (Exception ex)
    {
        Response.Write(ex.ToString());
    }

}

Ответы [ 2 ]

2 голосов
/ 25 марта 2011

Application_Start выполняется только один раз, когда приложение запускается IIS. Фактическая причина проблемы заключается в коде внутри блока try, который можно диагностировать с помощью каркаса ведения журнала или путем установки точки останова внутри блока catch.

Вы не можете использовать Response.Write внутри блока catch, так как нет запроса (или ответа), связанного с Application_Start. Это вызывает новое исключение, которое скрывает первоначальную причину проблемы. Посмотрите на ASP.NET Application Lifecycle для получения более подробной информации.

0 голосов
/ 25 марта 2011

Я полагаю, что, скорее всего, у вас есть проблема с кодом запуска приложения, которая приводит к исключению, которое приводит вас к блокировке блока. По какой-то причине объект ответа недоступен, и поэтому вы получаете необработанное исключение. Поскольку приложение уже запущено, путь к коду больше не посещается, и вы не увидите ошибку при последующем запросе.

Я бы посоветовал записать исключение в файл, а не отправлять его в ответ, чтобы проверить исходные сведения об исключении, которые затенят реальную проблему и почему ответ недоступен. Вы можете использовать System.Diagnostic.Trace и прослушивать трассировки для регистрации (или вы можете использовать библиотеку, такую ​​как Log4Net или MS Logging App Block)

...