1

我有一个带有以下 url https://pv.xxxxx.org/Y/Students.aspx的门户应用程序,至少它在我的 PC 上的任何网络浏览器中都是这样显示的。在我的 Kindle Fire HD (Silk) 或 iPhone (Chrome) 上,它显示为

https://pv.xxxxx.org/(F(gXjx4o3HVBTt2dUj-0_fg8JrTaBqvjZUE7WjynRNoYUKpUo3YFpP6KD92KXl6XSeJE633w9eetXNHJhE_bXBrMe8wcd9FKivh16Ibrz4a06dZd4UAxyHTxK2euBM8gRlqzEmgLnQmy830rW2UtMwfmuNJQVwsvyz72EaLNgTkf01))/Y/Students.aspx

只要我单击 Web 表单应用程序中的任何链接,系统就会将我注销。我已经在系统中编写了相当重的错误处理代码,因此如果出现任何问题,它会向我发送一封电子邮件并将日志记录到数据库和事件日志中,而我什么也得不到。我无法重现该问题,因为它仅发生在这两个移动设备(我可以访问)上,并且我无法在其上运行调试器。

其他一些信息不会对我在 iPhone 上的 Safari 中的 url 造成不良影响。我确实使用查询字符串来传递变量,但不是在您第一次加载应用程序时,这是在最终用户(在本例中为我)经过身份验证并位于登录页面之后。

所以我的问题是为什么要修改它,我可以让它停止,如果不能,我该如何修复它?我一直在努力寻找有关该问题的任何提及,更不用说通过谷歌搜索找到解决方案了。

4

1 回答 1

0

我的门户应用程序正在运行 asp.net 4.0,我无法进入 4.5,因为我正在运行 Windows 2003 服务器,它不会让我安装它。所以这个问题与任何运行 4.5 或更高版本的人无关。在我上面提到的浏览器中,他们采用基于表单的身份验证并将其设置为无 Cookie 模式。我假设,虽然我不确定,但 Querystring 的添加是身份验证令牌。

为了解决这个问题,让我的最终用户不必弄乱他们的 cookie 设置,我用以下代码更新了我的 web.config:

<authentication mode="Forms" >
  <forms loginUrl="~/Account/LogOn" timeout="2880" cookieless="UseCookies" />
</authentication>

该代码片段的关键部分是:

cookieless="UseCookies"

一旦我更新了 Web.Config,Querystring 的添加就消失了,我能够使用 chrome 的开发人员工具观察到 .aspxauth 身份验证令牌的创建。

为了完整起见,我在这里添加了解释,这就是我最终找到答案的地方:

在 iOS 上使用 Google Chrome 浏览器在 ASPNET 站点上进行 FormsAuthentication

谢谢斯科特·汉塞尔曼先生。

于 2013-04-04T20:02:30.323 回答