Веб-приложение, разработанное в VS 2010 SP1, не работает в VS 2017 - PullRequest
0 голосов
/ 25 октября 2018

У меня есть веб-приложение Legacy, которое отлично работает в VS 2010 с пакетом обновления 1. Я пытаюсь перенести то же решение на VS 2017. Когда я открываю решение в 2017 году и пытаюсь запустить его, появляется Application_Start там, после того как он переходит к Application_EndRequest, он никогда не попадает на событие Session_Start.

Я получаю запрос Application_EndRequest:

Session state is not available in this context.    at System.Web.HttpApplication.get_Session()

enter image description here

Мое веб-приложение использует архитектуру MVC.

Я попытался включить сеанс в webconfig, но все еще не повезло.

 <system.web>
      <pages enableSessionState="true" /> 
 </system.web>

версия веб-страницы с использованием

  <add key="webpages:Version" value="2.0.0.0" />

Целевая структура

 <compilation debug="true" targetFramework="4.0">

Используется версия Mvc:

  <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

Note 1 : Я уже прошел через большинство вопросов переполнения стека, связанных с этой проблемой, и ничто не решает мою проблему.

Обновление:

 protected void Application_Start()
        {

            AutoMapperConfiguration.Configure();

            AreaRegistration.RegisterAllAreas();

        }
void Application_EndRequest(object sender, EventArgs e)
        {
          //no code inside application end request.
        }
  protected void Session_Start(Object sender, EventArgs e)
        {

            try
            {
                string sessionId = Session.SessionID;

                bool dbcheck = CheckDBConnection();

            }

        catch (Exception ex)
            {
                //handle execption
            }


        }

Примечание 2. Сам по себе session_start не работает, и я вообще не оцениваю сеанс в application_start.Я прокомментировал весь код внутри запуска приложения, но все еще возникает та же проблема.

Я пытался открыть то же самое решение из VS 2015, все еще то же поведение, что оно вызывает событие Application_End, и ошибка вОтправитель объекта

Session = '((System.Web.HttpApplication)sender).Session' threw an exception of type 'System.Web.HttpException' 

Может кто-нибудь помочь мне решить то же самое?Любая помощь будет оценена.

1 Ответ

0 голосов
/ 25 октября 2018

Наконец я нашел решение.В моем файле webconfig определено url redirection rule, что и составляет проблему.Он отлично работает после комментирования, что

 <rewrite>
      <rules>
              <rule name="Redirect to https" stopProcessing="true">
          <match url="(.*)" />
          <conditions>
            <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          </conditions>
          <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="SeeOther" />
        </rule>
      </rules>
    </rewrite>
...