以前将我的 mvc 应用程序从 mvc2 更新到 mvc 3,上周更新到 mvc 4。还将它从 IIS6 服务器移动到 IIS7 服务器。
现在很多通过 mvc 路由生成的 url 在 url 中都有 token。像这样:
此令牌适用于页面上所有 url 的 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 属性标记。删除了这个属性 - 现在所有的 url 看起来都不错。这很奇怪,但帮助了我。
<%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);
}