2013-07-27 2 views
4

я нашел свойство SuppressFormsAuthenticationRedirect на 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; 
+0

Установлен ли ваш проект против .Net 4, в отличие от .Net 4.5? –

+1

Во-вторых, как вы можете достичь части Debug, если ваше приложение не будет компилировать/строить в первую очередь? –

+0

@AmithGeorge Да, я действительно видел на [этой странице] (http://msdn.microsoft.com/en-us/library/system.web.httpresponse.suppressformsauthenticationredirect.aspx), что он поддерживается только в версии 4.5 , но тогда почему бы свойство было там и доступно во время выполнения? – xdumaine

ответ

0

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

Смежные вопросы