我有一个MVC网站,它提供“服务器在发送HTTP标头后无法修改cookie”。错误。它发生在_Layout.cshtml中。在该行,有一个@ Html.Action(“_ LightBoxes”),它调用_LightBoxes局部视图。 _LightBoxes部分视图的代码很简单: -
[ChildActionOnly]
public PartialViewResult _LightBoxes()
{
return PartialView();
}
我已经阅读了其他带有此错误的线程,但这些似乎都在执行重定向或类似操作,而在此控制器中它只返回一个空的部分视图。
有没有人对导致这种情况的原因有任何建议?它可能是PartialView内部引用到另一个实际导致此错误的控制器吗?
编辑 - 2015年1月26日 我认为这可能是个问题。这是在PartialView中从该行调用的部分视图。下面的代码,用于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>
谢谢, 麦克
答案 0 :(得分:0)
这通常是在MVC应用程序中由于在应用程序中某处不恰当地使用Response.Write()
引起的(它甚至不需要在导致问题的代码中)。 MVC设计用于在控制器完成处理后呈现页面,并将它们呈现到输出缓冲区,最后将其写入输出最末端的响应。
如果您的管道中某处有代码执行Response.Write()
,然后您尝试编写cookie,但在实际呈现视图之前,您会遇到此问题。
因此,请搜索不在视图中的Response.Write()
代码。