16

今日、私は MVC 3 Beta で遊び始めました。デフォルトの MVC 3 テンプレートからのアプリケーションで開始し、次のようにホーム コントローラーに新しいアクションを追加しました (ビュー付き)。

[Authorize]
public ActionResult Secured()
{
    ViewModel.Message = "This is secured area, only authenticated users should be here.";
    return View();
}

Secured アクションに移動しようとすると、404 ページが見つからないというエラーが表示されます。

これが私のweb.configの認証セクションです。

<authentication mode="Forms">
  <forms loginUrl="~/Account/LogOn" timeout="2880" />
</authentication>

私がそれを正しく理解していれば、Authorize 属性によって 401 無許可の HTTP 応答が返され、認証ハンドラーによってインターセプトされ、loginUrl にリダイレクトされるはずです。これにより、アカウント/ログオン アクションが発生します。

私の MVC 2 アプリケーションは期待どおりに動作し、アカウント/ログオン アクションに移動します。またはこれは MVC 3 ベータ版のバグですか?

4

4 に答える 4

15

RTMではもう機能しません

追加する必要があります

<add key="loginUrl" value="~/Account/LogOn" />

Web.Config の appSettings に

問題は WebMatrix.WebData の ConfigUtil にあります

private static string GetLoginUrl()
{

    return ConfigurationManager.AppSettings[FormsAuthenticationSettings.LoginUrlKey] ?? FormsAuthenticationSettings.DefaultLoginUrl;
}



staticFormsAuthenticationSettings()
{
    LoginUrlKey = "loginUrl";
    DefaultLoginUrl = "~/Account/Login";
}
于 2011-02-18T19:14:26.727 に答える
10

ScottGu は彼のブログで、これは明らかにバグであるという同様の質問に答えています。

回避策は、次のエントリを追加することです。

<add key="autoFormsAuthentication" value="false" />

<appSettingsWeb アプリケーションのルート web.config ファイルの /> セクションに追加します。

于 2010-10-07T01:13:48.603 に答える
2

bin ディレクトリにある WebMatrix*.dll を削除すると、すべて問題ありません。

于 2011-09-27T10:52:05.490 に答える
0

MVC 4 でも同じ問題が発生します。ただし、MVC 4 では、次のように構成ファイルで認証モードが ="Forms" に正しく設定されている場合、問題はなくなります。

<authentication mode ="Forms">
    <forms loginurl = "your login" timeout ="2880" slidingExpiration="true">
</authentication>

わたしにはできる。モードを取り出すと、問題が発生します。

于 2012-01-16T20:27:14.723 に答える