日期:2014-05-17  浏览次数:20442 次

Server cannot modify cookies after HTTP headers have been sent
mvc 在ActionResult 加载时候回去读取客户端cookie,如果不存在在添加个cookie
但是却出现:Server cannot modify cookies after HTTP headers have been sent.

 System.Web.HttpCookie cookie = new System.Web.HttpCookie(cookieName);
 cookie.Value = s;
 cookie.Expires = DateTime.Now.AddHours(24 * 365);
 cookie.Domain = ".xx.com";
 cookie.Path = "/";
 contorler.Response.Cookies.Add(cookie);


------解决方案--------------------
没看到你写的判断cookie是否存在的代码啊。这句是说你重复建立了吧。
------解决方案--------------------
只要不同时跳转和修改cookie、输出缓存,就能解决问题;
当然,也可以在webconfig配置中修改cacheRolesInCookie属性值设置成false就行了
------解决方案--------------------
道理很简单,如果你懂http协议的话。

http协议的响应类似这样:
http 1.1 200 ok //开始
server: ... //响应头
date: ...
set-cookie: xxx

<html> //这里是正文
   <head>
   ...
...

你可以看到,一旦开始往客户端输出正文数据,你就不能再setcookie了。