Почему 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, он не знает об этом свойстве.