ASP.NET MVC/URL中的神秘字符

本文关键字:字符 URL NET MVC ASP | 更新日期: 2023-09-27 17:59:45

我在ASP中部署了一个网站。NET MVC(版本5.2.3.0),我面临着一个奇怪的问题,有时URL中会出现一些字符,例如:www.website.com/(X(1)S(3hfps41rchxt45wwrsn4o5bi))/RestOfRoute而非www.websitecom/RestOfRoute

它是随机发生的,神秘字符串总是匹配(X(1)S(*))。

在stackoverflow上搜索后,我发现它可能与无会话cookie有关,但我的网站没有使用它。以下是Web.config的摘录,可能会有所帮助:

<authentication mode="Forms">
   <forms loginUrl="<url>" timeout="2880" />
</authentication>

有人知道这个问题的根源是什么吗?

编辑1:

web.config 的"system.web"块

<system.web>
  <customErrors mode="RemoteOnly" />
  <compilation debug="false" targetFramework="4.5">
    <assemblies>
      <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
      <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </assemblies>
  </compilation>
  <authentication mode="Forms">
    <forms loginUrl="<url>" timeout="2880" />
  </authentication>
  <pages>
    <namespaces>
      <add namespace="System.Web.Helpers"/>
      <add namespace="System.Web.Mvc"/>
      <add namespace="System.Web.Mvc.Ajax"/>
      <add namespace="System.Web.Mvc.Html"/>
      <add namespace="System.Web.Routing"/>
      <add namespace="System.Web.WebPages"/>
      <add namespace="Telerik.Web.Mvc.UI"/>
    </namespaces>
  </pages>
  <httpHandlers>
    <add path="Telerik.Web.UI.WebResource.axd" type="Telerik.Web.UI.WebResource" verb="*" validate="false"/>
    <add path="Telerik.Web.UI.DialogHandler.axd" verb="*" type="Telerik.Web.UI.DialogHandler" validate="false"/>
    <add verb="GET,HEAD" path="asset.axd" validate="false" type="Telerik.Web.Mvc.WebAssetHttpHandler, Telerik.Web.Mvc"/>
  </httpHandlers>
  <httpRuntime maxRequestLength="2048576000" />
</system.web>

ASP.NET MVC/URL中的神秘字符

<configuration>
  <system.web>
    <sessionState cookieless="true"
      regenerateExpiredSessionId="true" />
  </system.web>
</configuration>

我很确定,你的web.config包括了这个。这使得会话按选项卡进行。每个选项卡都有唯一的标识符,在这个标识符的帮助下,服务器将知道哪个选项卡正在请求。