我有一个旧版Web应用程序,该Web应用程序在带有Service Pack 1的VS 2010中可以正常运行。我试图将同一解决方案迁移到VS2017。当我在2017年打开该解决方案并尝试运行时,它遇到了{{ 1}}到达Application_Start
之后,再也不会遇到Application_EndRequest
事件。
我收到Application_EndRequest的错误是
Session_Start
我的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
有人可以帮助我解决同样的问题吗?任何帮助将不胜感激。
答案 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>