为什么SuppressFormsAuthenticationRedirect导致构建错误?

时间:2013-07-27 21:00:38

标签: c# asp.net-mvc-4 system.web

我在this post找到了属性SuppressFormsAuthenticationRedirect,但当我尝试使用它时:

Response.StatusCode = (int)HttpStatusCode.Unauthorized;
Response.SuppressFormsAuthenticationRedirect = true;

我收到了构建错误:

Error   53  'System.Web.HttpResponseBase' does not contain a definition for 'SuppressFormsAuthenticationRedirect' and no extension method 'SuppressFormsAuthenticationRedirect' accepting a first argument of type 'System.Web.HttpResponseBase' could be found (are you missing a using directive or an assembly reference?)   Controllers\ErrorController.cs  39  26  Roving

所以我扔了一个断点,在观察窗口检查Response,发现它确实有属性。所以我尝试使用Response.SuppressFormsAuthenticationRedirect = true立即设置它,这不会导致错误,并且它按预期工作。那么为什么这是构建错误?我做了这个,只是为了好玩,并发现它按预期工作(但这非常hacky):

Response.StatusCode = (int)HttpStatusCode.Unauthorized;
((dynamic)Response).SuppressFormsAuthenticationRedirect = true;

1 个答案:

答案 0 :(得分:0)

Amith George在评论中建议这是因为我在我的机器上安装了.NET 4.5,但是目标是.NET 4.0。因为.NET 4.5是4.0以上的就地升级,所以正在使用该DLL,因此该变量在运行时具有SuppressFormsAuthenticationRedirect属性。构建失败正确,因为在针对.NET 4进行编译时,它不知道该属性。