【发布时间】:2015-01-23 15:24:49
【问题描述】:
我有一个 MVC 站点,它给出“发送 HTTP 标头后服务器无法修改 cookie”。错误。它发生在 _Layout.cshtml 中。在那一行,有一个@Html.Action("_LightBoxes"),它调用了一个_LightBoxes 局部视图。 _LightBoxes Partial View 的代码很简单:-
[ChildActionOnly]
public PartialViewResult _LightBoxes()
{
return PartialView();
}
我读过其他线程出现此错误,但这些似乎都在执行重定向或类似操作,而在此控制器中它只是返回一个空的局部视图。
有人对造成这种情况的原因有任何建议吗?它可能是 PartialView 内部对另一个实际上导致此错误的控制器的引用吗?
编辑 - 2015 年 1 月 26 日 我认为这可能是问题所在。这是在从该行的 PartialView 中调用的 Partial View 中。下面的代码,用于 Facebook 登录按钮,其 cookie 设置为 true。
<script type="text/javascript">
//Facebook Login Button
window.fbAsyncInit = function () {
FB.init({
appId: "@(System.Configuration.ConfigurationManager.AppSettings["facebook_appid"].ToString())", // App ID
//channelUrl : '//WWW.YOUR_DOMAIN.COM/channel.html', // Channel File
status: true, // check login status
cookie: false, // enable cookies to allow the server to access the session
oauth: true, // enable OAuth 2.0
xfbml: true // parse XFBML
});
$("fblogin").show();
};
(function (d) {
var js, id = 'facebook-jssdk'; if (d.getElementById(id)) { return; }
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
d.getElementsByTagName('head')[0].appendChild(js);
}(document));
//End Facebook
</script>
谢谢, 迈克。
【问题讨论】:
-
当服务器已将标头完全发送到客户端浏览器时,您正在尝试修改 HttpCookie。看这个答案stackoverflow.com/questions/2383169/…
-
你的 _LightBoxes.cshtml 中有什么?
标签: asp.net asp.net-mvc cookies