2011-04-05 77 views
3

這可能乍看起來似乎與this question非常相似,但在我的情況下,我在我的MVC應用程序中實現了基於AspNetSqlMembershipProvider的標準安全性。ASP.NET MVC 3應用程序總是重定向到Live站點上的登錄

當我部署我在本地主機上或內部登臺服務器應用程序,一切正常 - 大部分的HomeController和的AccountController行動都是可見的未經授權的用戶和所有其他被保護的(我用[Authorize]屬性用於標記班以及需要保護的方法)

問題是,當我將應用程序部署到活動託管服務器時,基本上所有請求都會重定向到登錄頁面,而沒有任何明顯的原因。我知道我必須忽略一些簡單但重要的配置,但是因爲我對這個完整的.NET新事物(不管是ASP還是MVC)都不熟悉,所以我不能爲我的生活弄清楚什麼是錯的或丟失

如果需要更多信息,請讓我知道,我會很樂意提供。

編輯: Web.config中沒有<location>元素。此外,分段之間的差異生活站點Web.config僅在連接字符串和Elmah記錄器配置中。

同樣,註冊全局過濾器的代碼是相當標準的(我還沒有觸及這一點):

public static void RegisterGlobalFilters(GlobalFilterCollection filters) 
{ 
    filters.Add(new HandleErrorAttribute()); 
} 

也許有什麼東西在服務器配置,可能會導致不同的行爲?我應該在哪裏看?

+0

@Roland有沒有可能爲AuthorizeAtribute實現GlobalActionFilter? – tugberk 2011-04-05 14:31:16

+1

我會開始比較您的舞臺和實況站點的web.config文件,尋找位置和授權 – BlackTigerX 2011-04-05 14:39:22

+0

您是否介意發佈您的實時web.config的片段,特別是BlackTigerX所說的Location節點。 – Ayo 2011-04-05 17:30:41

回答

1

事實證明,這個問題確實是一個「微不足道的配置問題」,儘管它與asp.net或mvc沒有任何關係。

在我的託管服務提供商的控制面板中,我只需授予匿名用戶權限即可從應用程序的物理文件夾讀取文件。

完成此操作後,應用程序代碼按預期工作。

似乎由於匿名(未認證)用戶沒有從物理文件系統讀取任何內容的權限,IIS將此解釋爲401錯誤,並自動將所有請求重定向到配置的登錄方法(已設置爲「Forms」 ),導致這種單純的奇怪的錯誤信息。

+0

+1也適用於我。我必須設置wwwroot目錄以允許讀取權限。 – Seth 2011-11-01 09:12:47

相關問題