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それで、エラーを引き起こさなかった即時に設定しようとしましたが、期待どおりに機能しました。では、なぜこれはビルド エラーなのでしょうか。楽しみのためにこれを行ったところ、期待どおりに機能することがわかりました(ただし、これはかなりハックです)。

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 に答える