usr*_*usr 11 asp.net iis asp.net-mvc
我注意到,即使我的URL前缀/(F())/是废话,我的ASP.NET Web应用程序的请求也会成功.通常的行动方法很受欢迎.Request.Url并没有显示URL前缀.所以,如果我要求/(F())/x行动看到Request.Url == "/x"
然后我尝试了其他ASP.NET MVC站点,例如Stack Overflow:
根据Fiddler的说法,正在按照预期提出要求:
正如您所看到的,请求URL是正确的,服务器在没有重定向的情况下回复完整内容.浏览器窗口也显示该URL.
此URL 确实有效.因此,我得出结论,框架中的某些内容会导致重写此请求并删除前缀.看起来Stack Overflow应用程序不知道前缀.
在Windows 7上的.NET 4.6.2上的Visual Studio 2017中创建的新MVC应用程序中也会出现相同的结果.
另一个有趣的受害者:https://www.microsoft.com/(F(blah))/ en-us/default.aspx(微软主页).
字符串(F())并不特别.查看其他有用的字符串的注释,例如/(F(pV0)).
由于我的ASP.NET代码对原始URL(Request.Url不包含前缀)视而不见,我似乎甚至无法检测到这种情况并使请求失败.
我还没有确认这是一个MVC问题.似乎很难找到ASP.NET + IIS附带的巨大功能海洋中的罪魁祸首.谁知道默认打开哪些功能?!我认为没有人真的知道:)
至少这是一个搜索引擎优化问题,但我发现它也令人不安,不知道发生了什么.这就是我正在调查的原因.这是什么行为以及如何摆脱它?
这是由ASP.NET cookieless功能集引起的.URL现在可能如下所示:
http://example.com/MyWebApplication/(A(XXXX)S(XXXX)F(XXXX))/home.aspx
打破它:
由于无cookie模式完全过时,导致SEO问题和混乱我建议立即禁用所有ASP.NET网站上所有可能的cookieless功能.
对于上述每个功能(表单身份验证,匿名身份验证和会话状态),您可以控制是否以及何时使用无cookie功能,以及何时使用无Cookie功能.控制它的配置设置是:cookieless ="UseCookies | UseUri | UseDeviceProfile | AutoDetect"
在我的情况下,我设置:
<anonymousIdentification enabled="false" />
<sessionState ... cookieless="UseCookies" />
Run Code Online (Sandbox Code Playgroud)
您需要根据自己的需要进行调整.
这有望解决这些URL 的生成问题,但似乎并不妨碍框架(静默)接受这样的URL.该文档声称将出现标题AspFilterSessionId,但我发现情况并非如此.
目前我没有阻止对这些不需要的URL的请求的解决方案.
| 归档时间: |
|
| 查看次数: |
265 次 |
| 最近记录: |