以前将我的mvc应用程序从mvc2更新到mvc 3,上周更新到mvc 4.还将它从IIS6服务器移动到IIS7服务器。
现在,许多由mvc路由生成的网址都在网址中包含令牌。像这样:
此令牌适用于页面上所有网址的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);
}
答案 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代码,构建/发布,看看你得到了什么结果。