在 VS 2010 SP1 解决方案中开发的 Web 应用程序在 VS 2017 中不起作用

Web application developed in VS 2010 SP1 solution not working in VS 2017

我有一个旧版 Web 应用程序,它在带有服务包 1 的 VS 2010 中完美运行。我正在尝试将相同的解决方案迁移到 VS 2017.When 我在 2017 年打开了该解决方案并尝试 运行 它在到达 Application_EndRequest 之后点击 Application_Start,它永远不会点击 Session_Start 事件。

我得到的 Application_EndRequest 错误是

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

我的 Web 应用程序使用 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' 

谁能帮我解决同样的问题?任何帮助将不胜感激。

我终于找到了解决办法。在我的 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>