1

我是 ASP .NET 的新手,我真的需要一些帮助。我在互联网上搜索了很多,但没有发现任何关于我的问题...这是关于一个网站,用户不登录就无法访问其页面(没有任何页面)。我们使用表单身份验证:

<authentication mode="Forms">
  <forms loginUrl="~/Login.aspx" timeout="2880" />
</authentication>
<authorization>
  <deny users="?" />
</authorization> 

一段时间后,我们进行了一些更改,让用户无需登录即可访问该站点的页面,但我们也希望保留以前的概念。所以我们在 web.config 中创建了一个键来指示页面是否可以访问。如果这个“autologin”键设置为1,在重定向到“Login.aspx”后,系统会使用硬编码的用户信息进行自动登录,所以用户有一种不用登录也可以浏览网站的感觉,但重点是同样:在访问页面之前,服务器会向 Login.aspx 发送 302 响应(重定向)。这是我的问题!我认为...不能遵循临时重定向。

例如:如果我尝试将页面查看为“GoogleBot”,则会收到以下错误:
“无效的 URL 或服务器没有响应,HTTP 返回代码:302”

使用 SEO Toolkit 会导致类似错误:
“http://localhost:5769/GlobalShop/”的链接导致重定向到“http://localhost:5769/GlobalShop/Login.aspx?ReturnUrl=%2fGlobalShop%2f " 这导致了另一个重定向。搜索引擎只能通过单个重定向跃点传递页面排名和其他相关数据。使用不必要的重定向会对页面排名产生负面影响。

当我使用 facebook 的“对象调试器”时,也会发生同样的错误。我们有一个类似按钮的功能,但 Facebook 无法提取元数据来格式化出现在用户 Facebook 页面上的帖子。错误消息:
“无法遵循重定向:URL 请求 HTTP 重定向,但无法遵循。
重定向路径:
原始: http: //mysite.net/Default.aspx
302: http: //mysite.net/Login。 aspx?ReturnUrl=%2fDefault.aspx
301: http://mysite.net/Default.aspx
最终 URL 以粗体显示(这是我们尝试从中提取元数据的 URL)。”

为了从一个页面重定向到另一个页面,我通常使用“Response.RedirectPermanent()”来避免这类问题。我想知道我是否可以以某种方式将表单身份验证的响应类型更改为永久重定向(301)?如果不可能,我该怎么办?我究竟做错了什么?

谢谢你的帮助!

4

1 回答 1

0

如果您启用了 FormsAuthentication,即使使用自动登录,您也将不得不经历一个重定向周期。

不幸的是,这意味着删除该重定向循环的唯一方法是完全删除 FormsAuthentication。

于 2012-08-08T09:15:18.680 回答