4

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;
4

1 回答 1

0

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

于 2013-08-16T12:17:17.217 回答