2011-03-22 69 views
2

我已經部署了我的MVC應用程序,但是當我從IIS瀏覽時,我發現表單身份驗證似乎阻止了CSS。 這不會發生在我的開發服務器上。 爲什麼會發生這種情況? 我的母版頁看起來像這樣;MVC:我已經部署了我的應用程序,但CSS只在我登錄時才起作用

<head id="Head1" runat="server"> 
    <title><asp:ContentPlaceHolder ID="TitleContent" runat="server" /></title> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
    <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/jquery-ui.js" type="text/javascript" language="javascript"></script> 
    <script src="http://nje.github.com/jquery-tmpl/jquery.tmpl.js" type="text/javascript"></script> 
    <script src="<%=Url.Content("~/Scripts/jquery.form.js")%>" type="text/javascript"></script> 
    <!-- note that the order scripts are included in is important --> 
    <script src="<%=Url.Content("~/Scripts/jquery.Validate.js")%>" type="text/javascript"></script> 
    <script src="<%=Url.Content("~/Scripts/MicrosoftMvcJQueryValidation.js")%>" type="text/javascript"></script> 
    <script src="<%=Url.Content("~/Scripts/ConfusedValidation.js")%>" type="text/javascript"></script> 
    <script src="<%=Url.Content("~/Scripts/Awesome.js")%>" type="text/javascript"></script> 
    <script src="<%=Url.Content("~/Scripts/MicrosoftAjax.debug.js") %>" type="text/javascript"></script> 
    <script src="<%=Url.Content("~/Scripts/MicrosoftMvcAjax.debug.js") %>" type="text/javascript"></script> 
    <script src="<%=Url.Content("~/Scripts/jquery.jcacher-1.0.0.min.js")%>" type="text/javascript"></script> 
    <link href="<%=Url.Content("~/Content/jquery.ui.autocomplete.css")%>" rel="stylesheet" type="text/css" /> 

    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.6/themes/overcast/jquery-ui.css" 
      type="text/css" rel="Stylesheet" class="ui-theme" /> 

    <link href="<%=Url.Content("~/Scripts/Awesome.css")%>" rel="stylesheet" type="text/css" /> 

*編輯* 在Firebug中我得到的消息; 無法加載來源:http://192.168.100.999/Content/Site.css 事實上,我得到這個所有的本地文件。

+2

只是一個提示:如果可能的話,你可能希望將所有的JavaScript引用的移動到頁面的底部,它會加快您的網頁加載時間:http://developer.yahoo。com/performance/rules.html – 2011-03-22 12:19:08

+0

我非常欣賞這樣的提示。謝謝。 – arame3333 2011-03-22 14:43:02

回答

4

答案是將用戶IIS_IUSR的權限分配給部署應用程序的文件夾。一位同事爲我發現了這個。我不得不承認爲什麼這是必要的,但它解決了問題。

3

您應明確啓用匿名訪問您想公開可用的資源。要做到這一點的方法是包含公共內容具有以下設置的文件夾中添加一個web.config:

<configuration> 
    <appSettings/> 
    <connectionStrings/> 
    <system.web> 
     <authorization> 
     <allow users="*"/> 
     </authorization> 
    </system.web> 
</configuration> 

它可能工作在開發服務器上監守Windows身份驗證意味着你就不再是匿名。

+0

這不起作用。我在Firebug中發現沒有任何本地文件正在加載,我收到消息;無法加載源:http://192.168.100.999/Content/Site.css – arame3333 2011-03-22 12:18:47

+1

我注意到site.css被定義爲一個相對路徑,不像html文檔頭部的資源。是螢火蟲加載這些資源(例如jquery.Validate.js)好嗎?嘗試並更改site.css鏈接的位置定義以使用@ Url.Content助手。 – Xhalent 2011-03-22 12:36:24

+0

此外,什麼Http代碼,當文件無法加載 - 即你無法加載文件,因爲它們不存在(部署問題)404錯誤,安全異常401或服務器錯誤500? – Xhalent 2011-03-22 12:50:49

4

你在共享的主機上?你的腳本* .js加載了嗎?如果這樣做意味着你的相對路徑不好,那麼你可能會使用Url.Content以與你的.js相同的方式引用你的css文件。

<link href="<%=Url.Content("~/Content/Site.css)%>" rel="stylesheet" type="text/css" /> 

我建議你看一看SquishIt:http://www.codethinked.com/squishit-the-friendly-aspnet-javascript-and-css-squisher它會結合起來,最大限度地減少您的瀏覽器優化的CSS和JavaScript。

希望它有幫助!

+0

我試過,但同樣的問題 – arame3333 2011-03-22 13:16:19

+0

和我的問題呢?共享主機?你的其他script.js會加載嗎?你可以加入更多源代碼或者給我們一個Url,這樣我們可以檢查它嗎? – VinnyG 2011-03-22 14:00:09

+0

道歉我太快閱讀你的回覆。我很欣賞你的意見。我不共享主機,而且uri僅適用於本地網絡。出於某種原因,關鍵是登錄。在登錄之前,本地js和css文件不會加載。之後他們確實加載。 – arame3333 2011-03-22 14:12:43

2

您只需更改您的應用程序池標識屬性。它是在高級設置 - >身份。從下拉列表中將標識值更改爲「ApplicationPoolIdentity」。它應該解決這個問題。

這裏的原因是您在訪問網站內容時未登錄,例如樣式表或腳本。所以網站不會加載這些內容。如果您通過身份驗證,則會加載所有內容。身份值通常是網絡服務或本地服務。

3

這是一個權限問題:請同時添加:IIS_USR和IUSR權限的文件夾結構

11

我也面臨着同樣的問題。我的本地服務器IIS配置不起作用,但開發服務器正常工作。該時間必須通過右鍵單擊IIS中熱門網站將「用戶權限」添加到我的Hosed文件夾。

只需按照步驟。 enter image description here

然後通過添加用戶面板添加名爲IUSER的uesr。

enter image description here

+0

謝謝,它解決了我的問題。你知道爲什麼這是必要的嗎? – Conan 2014-02-12 11:33:31

+0

這是因爲您的應用程序池使用IUSR作爲訪問該文件夾的用戶;因此,您需要爲該用戶授予訪問該文件夾的權限;否則您將獲得拒絕權限(403) – 2015-01-29 03:06:00

相關問題