Почему SuppressFormsAuthenticationRedirect вызывает ошибку сборки?

Я нашел собственность 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 что не вызвало ошибки, и это сработало, как ожидалось. Так почему же это ошибка сборки? Я сделал это, просто для удовольствия, и обнаружил, что все работает как положено (но это довольно забавно):

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

1 ответ

Решение

В комментариях Амит Джордж предположил, что это потому, что на моей машине установлен.NET 4.5, но он ориентирован на.NET 4.0. Поскольку.NET 4.5 является обновлением на месте по сравнению с 4.0, эта DLL использовалась, и, таким образом, переменная имела свойство SuppressFormsAuthenticationRedirect во время выполнения. Сборка не удалась должным образом, потому что при компиляции против.NET 4, он не знает об этом свойстве.

Другие вопросы по тегам