2012-11-29 63 views
1

我有一個運行在IIS 7.5上的ASP.NET MVC應用程序。 已啓用表單已驗證登錄後出現錯誤404.0。 Asp.Net MVC和IIS 7.5

我可以訪問登錄頁面。 (這意味着路線可以),但是當我登錄應用程序時,應該發送一個發佈數據到http://localhost/tgpwebged/Account/Login來驗證用戶。

問題是我的應用程序正在尋找/帳戶/登錄在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是集合T o接受匿名登錄,以便用戶能夠訪問登錄頁面。

這是錯誤消息我得到:

TTP錯誤404.0 - 找不到 您正在尋找已被刪除的資源,有其名稱更改,或者暫時不可用。

一些詳細信息:

請求的URL http://localhost:8081/Account/Login(正道:http://localhost:8081/tgpwebged/Account/Login) 物理路徑S:\項目\帳戶\登錄(應該是S:\項目\ tgpwebged \帳戶\登錄) 登錄方法匿名 登錄用戶匿名

回答

2

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")' > 
+0

謝謝...那是我的p roblem –