【问题标题】:Session not saved for the domains with/without www ASP.NET没有为有/没有 www ASP.NET 的域保存会话
【发布时间】:2017-12-06 19:55:02
【问题描述】:

这可能是重复的,但由于这些门户网站上的任何答案都不适合我,所以我再次发布问题。

我有一个网站,当我尝试通过在 URL 中提供两个不同的域名来测试该网站中的会话数据时。

我附上截图以作简要说明。

当我登录 URL ssfound.com 时,会话被保存并显示我的登录详细信息。

当我打开 www.ssfound.com 时,会话无法获取 htese 登录详细信息。

我在互联网上搜索并找到了一些解决方案,但没有一个有效。 我将它添加到配置文件后进行了测试,但下面不起作用

<httpCookies domain=".ssfound.com"/>

<httpCookies domain="ssfound.com"/>

我什至尝试过 &lt;sessionstate cookieless="true"/&gt; 和 mode = InProc,但这些都不起作用。

请不要将其标记为重复,因为我在 stackoverflow 社区中尝试了上述solutions,但它们对我不起作用。

【问题讨论】:

  • 你不应该使用无cookie会话。
  • 是的mason,添加cookieless实际上在上传文件时导致了另一个问题。

标签: asp.net session webforms dns hosting


【解决方案1】:

您的网站 ssfound.com 和 www.ssfound.com 被视为两个不同的网站,类似于 http 和 https。

在非 www 或 www 之间进行选择,并始终将用户重定向到您想要的网址,这也有助于您在 SEO、分析、入站链接等方面。

您可以使用以下 c# 代码(在全局文件中)将非 www 站点用户转换为 www 站点。

protected void Application_BeginRequest (object sender, EventArgs e)
{
   if (!Request.Url.Host.StartsWith ("www") && !Request.Url.IsLoopback)
   {
      UriBuilder builder = new UriBuilder (Request.Url);
      builder.Host = "www." + Request.Url.Host;
      Response.StatusCode = 301;
      Response.AddHeader ("Location", builder.ToString ());
      Response.End ();
   }
}

【讨论】:

  • 感谢您的解决方案,这是有效的。但是,我必须检查这是否会影响现有功能。
猜你喜欢
  • 2013-03-31
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2011-03-22
  • 2010-10-07
  • 2016-06-15
  • 1970-01-01
  • 2023-03-31
相关资源
最近更新 更多