1

IIS7.5で実行されているASP.NETMVCアプリがあります。Authenticatedを有効にしたフォーム

ログインページにアクセスできます。(これはルートが問題ないことを意味します)しかし、私がログインすると、アプリはhttp://localhost/tgpwebged/Account/Loginユーザーを認証するために投稿データを送信する必要があります。

問題は、私のアプリケーションが/ Account / Login inを探していることですhttp://localhost/Account/Login(これはパスではありません)。

私は成功せずにこの振る舞いを変えようとしています。

これは私のroute.configです

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional }

web.config

<authentication mode="Forms">
  <forms loginUrl="Account/Login"/>
</authentication>

意見

<form method="post" action="/Account/Login">

また、IISは、ユーザーがログインページにアクセスできるように匿名ログインを受け入れるように設定されています。

これは私が受け取っているエラーメッセージです:

TTPエラー404.0-見つかりません探しているリソースが削除されたか、名前が変更されたか、一時的に利用できません。

いくつかの詳細情報:

要求されたURL http://localhost:8081/Account/Login(正しいパスhttp://localhost:8081/tgpwebged/Account/Login:)物理パスS:\ Projects \ Account \ Login(S:\ Projects \ tgpwebged \ Account \ Loginである必要があります)ログオン方法匿名ログオンユーザー匿名

4

1 に答える 1

2

ビューで言及したURLが間違っているため、POSTは間違ったURLになります。見る

<form method="post" action="/Account/Login">

これは常に投稿します<host name>/Account/Login

いずれかの相対パスを指定してみてください(またはResolveUrlメソッドを使用して絶対パスに置き換えてください)-たとえば、aspxビューでは、次のように使用できます。

<form method="post" action='<%= this.ResolveUrl("~/Account/Login") %>' >

かみそり(cshtml)ビューでは、(テストされていない)を試すことができます

<form method="post" action='@Url.Content("~/Account/Login")' >
于 2012-11-29T08:18:30.640 に答える