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

时间:2018-10-25 06:23:21

标签: asp.net-mvc visual-studio visual-studio-2010 asp.net-mvc-4 visual-studio-2017

我有一个旧版Web应用程序,该Web应用程序在带有Service Pack 1的VS 2010中可以正常运行。我试图将同一解决方案迁移到VS2017。当我在2017年打开该解决方案并尝试运行时,它遇到了{{ 1}}到达Application_Start之后,再也不会遇到Application_EndRequest事件。

我收到Application_EndRequest的错误是

Session_Start

enter image description here

我的Web应用程序正在使用Session state is not available in this context. at System.Web.HttpApplication.get_Session() 体系结构。

我尝试在MVC中启用会话,但还是没有运气。

webconfig

使用的网页版本是

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

目标框架是

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

使用的Mvc版本是

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

<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 我已经经历了与该问题相关的大多数堆栈溢出问题,但没有什么可以解决我的问题。

更新:

Note 1 :

注2: 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 } } 本身并没有受到影响,我也没有参加session_start中的评估会议。我已经注释了应用程序启动中的所有代码,但仍然存在相同的问题。

我试图从VS 2015打开相同的解决方案,但仍然遇到了Application_End事件,并且对象发送者中的错误是

application_start

有人可以帮助我解决同样的问题吗?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案。在我的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>