网址中的'F'令牌?

时间:2012-11-27 13:33:58

标签: asp.net-mvc iis-7 asp.net-mvc-4 asp.net-mvc-routing

以前将我的mvc应用程序从mvc2更新到mvc 3,上周更新到mvc 4.还将它从IIS6服务器移动到IIS7服务器。

现在,许多由mvc路由生成的网址都在网址中包含令牌。像这样:

  

http://domain.net/(F(D4379600E44F6AF6D4695965E697E4EF18E37E9D4A33EF1DFAC33B05D8BD1C3601EC6D41276ADE9048699F26558469FB12118644813DE200464A082F0250855D8AC0825CAA33DFF40092C74D3B3AA0440D2547DEFE320118B53A1C43149B9E616D8579D2DFC35225E06055C3E4F8FF37F610729E))/page/something

此令牌适用于页面上所有网址的70%,即使是图片也是如此。 它看起来像无Cookie浏览器的Forms Auth令牌。但我在web.config中禁用了cookieless(仅将其设置为cookie)。它也适用于所有浏览器(启用了cookie),即使用户未登录也是如此。

如何解决这个问题?有任何想法吗?想想,升级到新的mvc时我错过了一些东西。

UPD。试图以下一种方式禁用cookieless(web.config):

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

UPD1。我在母版页中使用几个RenderAction命令来渲染一些一般的局部视图。和这些部分的控制器方法,我用OututCache属性标记。删除了这个属性 - 所有网址现在都很好看。这很奇怪,但帮助了我。

<%Html.RenderAction("BlogPosts", "Widgets", new RouteValueDictionary()); %> 


[ChildActionOnly]
    //[OutputCache(Duration = 180)]
    public ActionResult BlogPosts()
    {
        var model = new BlogListModel();
        model.BlogPostType = defService.BlogType();
        model.List = widgetService.BlogPosts(3);
        return PartialView("Widgets/BlogPostsWidget", model);
    }

1 个答案:

答案 0 :(得分:0)

我同意其他评论者的说法,这可能是由cookieless会话状态属性引起的。各种网站都会显示,如果您将cookieless属性设置为true,那么网址将嵌入会话ID。

  

示例:此处为http://yourserver/folder/(session ID)/default.aspx

OutputCache似乎与无Cookie实现无关。

您所做的web.config更改可能不会立即发生。 It's a little ambiguous,但为了安全起见,您应该在对web.config文件进行任何更改后重新启动应用程序。

我会重新启动应用程序,取消注释OutputCache代码,构建/发布,看看你得到了什么结果。