2011-05-13 72 views
0

我正在爲我的MVC 3應用程序使用表單身份驗證。我已經添加了此行我的配置:使用表單身份驗證時出現ASP.NET MVC 3錯誤

​​

當我運行應用程序(在我的本機上)我得到下列錯誤,沒有的CSS樣式來通過。但是,當我登錄時,一切都很正常。所以我想我有幾個問題:

  1. 最好的做法是在web.config中添加授權規則,或者我應該將其添加到控制器中的[授權]屬性。
  2. 當我在web.config中添加授權規則時,我只會得到下面列出的錯誤。我錯過了什麼?

幫助,將不勝感激。謝謝。

p.s.我使用的Internet Explorer 8個

網頁錯誤的詳細信息

用戶代理:Mozilla的/ 4.0(兼容; MSIE 8.0; Windows NT的5.1;三叉戟/ 4.0; GTB6.5; .NET CLR 2.0 0.50727; InfoPath.2; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) 時間戳:週五,2011年5月13日15時48分十九秒 UTC

消息:語法錯誤行:1個字符:1 代碼:0 URI: http://localhost:1361/Account/LogOn?ReturnUrl=%2fScripts%2fjquery-1.4.4.min.js

消息:語法錯誤行:1字符:1 代碼:0 URI: http://localhost:1361/Account/LogOn?ReturnUrl=%2fScripts%2fjquery.validate.min.js

消息:語法錯誤行:1字符:1 代碼:0 URI: http://localhost:1361/Account/LogOn?ReturnUrl=%2fScripts%2fjquery.validate.unobtrusive.min.js

回答

1

的問題是,你似乎已經猜到了,那CSS文件由您的授權規則的保護。之所以在應用web.config中的規則和通過Authorize屬性應用規則之間存在差異,是因爲MVC框架不會通過您的控制器發送光盤上存在的文件請求,所以CSS文件(存在於光盤上)永遠不會看到屬性。但是,他們的確看到了web.config中的授權規則。

有幾種方法可以解決這個問題。任何一個都可以正常工作。

  1. 使用<location>標籤允許任何用戶請求您的CSS文件。
  2. 跳過授權web.config並使用Authorize屬性代替。如果你這樣做,你可以在global.asax.cs中的apply the attribute globally,所以你不必記得在每個控制器上做它。