C# 如果字符串参数以文件扩展名结尾,则请求会话对象为空
我有一个操作,我的用户可以用它来加载文件。URL如下所示:C# 如果字符串参数以文件扩展名结尾,则请求会话对象为空,c#,.net,asp.net-mvc,session,action-filter,C#,.net,Asp.net Mvc,Session,Action Filter,我有一个操作,我的用户可以用它来加载文件。URL如下所示: http://mywebsite.lan/report/GetReport/reportname.xlsx 为了让服务器处理类似文件名的参数,我必须在我的web.config中添加此参数: <system.webServer> <modules> <remove name="UrlRoutingModule-4.0" /> <add name="UrlR
http://mywebsite.lan/report/GetReport/reportname.xlsx
为了让服务器处理类似文件名的参数,我必须在我的web.config
中添加此参数:
<system.webServer>
<modules>
<remove name="UrlRoutingModule-4.0" />
<add name="UrlRoutingModule-4.0" type="System.Web.Routing.UrlRoutingModule" preCondition="" />
</modules>
</system.webServer>
我似乎找不到这件事的根本原因
还有其他人遇到过这个问题吗?我通过在web.config中添加以下行解决了类似的问题
<modules>
<remove name="Session"/>
<add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</modules>
我认为默认情况下,会话模块配置了“managedHandler”前置条件
默认情况下,.xlst不与托管处理程序关联,并且会话模块不为.xslt运行
当您在URL的末尾添加“/”时,我认为“Default Document”逻辑会在某处触发,默认文档可能是Default.aspx或类似的文件,它会打开会话模块。这纯粹是猜测,我没有证实
或者,您也可以在IIS->handler映射中将.xslt与托管处理程序(System.Web.UI.PageHandlerFactory)相关联。这可能会更好,因为我不喜欢会话模块现在在我们的网站上为每个请求触发的方式,但我没有尝试,因为在我们的例子中,没有定义的可关联的扩展
<modules>
<remove name="Session"/>
<add name="Session" type="System.Web.SessionState.SessionStateModule, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"/>
</modules>