1

単純な認証モデルに基づいて構築されたWebサイトがあります。ローカルおよびローカルIISで正常に実行されますが、正しい資格情報を入力した後、デフォルトのページにリダイレクトされません。これはすべてテストサーバーで行われます。

コードは次のようになります。

Web.config

<compilation targetFramework="4.0" />
        <httpRuntime maxRequestLength="50000" />
        <customErrors mode="On" defaultRedirect="exc/exc.aspx?e=1">
            <error statusCode="404" redirect="exc/404.aspx?e=404"/>
        </customErrors>
        <authentication mode="Forms">
            <forms loginUrl="admin/login.aspx" defaultUrl="admin/main.aspx" />
        </authentication>
        <authorization>
            <allow users="*" />
        </authorization>
    </system.web>
    <location path="admin">
        <system.web>
            <authorization>
                <deny users="?"/>
            </authorization>
        </system.web>
    </location>
    <location path="admin/css/cms.css">
        <system.web>
            <authorization>
                <allow users="?"/>
            </authorization>
        </system.web>
    </location>
    <location path="admin/css/styles.css">
        <system.web>
            <authorization>
                <allow users="?"/>
            </authorization>
        </system.web>
    </location>
    <location path="admin/images">
        <system.web>
            <authorization>
                <allow users="?"/>
            </authorization>
        </system.web>
    </location>
    <location path="exc/exc.aspx">
        <system.web>
            <authorization>
                <allow users="?"/>
            </authorization>
        </system.web>
    </location>

login.aspx

フォームアクションプロパティは空白で、AutoEventWireupはtrueです。

login.aspx.cs

protected void btnAuth_Click1(object sender, EventArgs e)
{
        //Some code not shown...

        //User Validation
            ValidateUserResponse response = new ValidateUserResponse();
            response = service.ValidateUser(request);

            if (response.State == true)
                FormsAuthentication.RedirectFromLoginPage(request.Alias, False);            
}

サインアウト

protected void Page_Load(object sender, EventArgs e)
{           
            FormsAuthentication.SignOut();
            Response.Redirect(FormsAuthentication.LoginUrl);            
}

テストサーバーでは、URLは次のようになります。

http://192.168.1.58/TestSite/admin/login.aspx

VS2010では、公開されたローカルIISでも同様に機能しますが、TestServerで公開されたときに、ログイン後にデフォルトページにリダイレクトされない理由がわかりません。Webサイトにログインする必要があり、403forbiddenエラーが発生したことを示しています。

ローカルで私はURLフォームと動作の両方でそれをテストしました(仮想フォルダー名は異なります):

http://192.168.1.58/TestSite1/admin/login.aspx

http://localhost/TestSite1/admin/login.aspx

それを機能させるための問題についての提案をいただければ幸いです。

ありがとうございました。

- - - - - アップデート - - - - - -

私はこの方法で問題を解決しました:

  1. WebAppを含む仮想ディレクトリを右クリックします
  2. [ディレクトリセキュリティ]タブに移動します
  3. [変更]をクリックします
  4. 未チェックの統合Windows認証
  5. 匿名アクセスもチェックする必要があります

これにより、Web.ConfigのWebForms認証設定がWebAppに影響を及ぼし始めました。

ありがとうございました。

4

1 に答える 1

1

WebサーバーのIISでフォーム認証が有効になっていることを確認してください。

于 2013-02-28T14:37:46.143 に答える