2012-02-07 79 views
26

我有一個asp.net mvc 3網站,我發佈它在iis 7.5(框架4.0),並且問題是CSS和腳本不工作util用戶登錄網站。所以:Css和腳本不工作,直到用戶登錄網站 - Asp.NET MVC 3網站

  • 網站被創建爲虛擬目錄並轉換成應用程序。
  • 該模式是表單身份驗證。
  • 我在iis中啓用表單和匿名身份驗證。

web配置有:

<location path="Content" allowOverride="true"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 
<location path="Scripts" allowOverride="true"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
     <globalization culture="pt-BR" uiCulture="pt-BR" /> 
    </system.web> 
</location> 

<authorization> 
    <deny users="?"/> 
</authorization> 

觀測值:我在bin目錄添加的dll文件:System.Web.Helpers.dll,System.Web.Mvc.dll程序,System.Web程序。 Routing.dll,System.Web.WebPages.dll。

我試圖將localtion中的路徑改爲「〜/ Content」,但是我得到了相同的結果。

我試圖把標籤允許在autorization標籤爲:

<authorization> 
    <deny users="?"/> 
    <allow users="*"/> 
</authorization> 

但我得到了相同的結果。

我在想什麼?

+0

您是否嘗試過在內容/腳本頁面上使用此允許標記? 2012-02-07 15:00:24

+0

沒有工作。 =/ – 2012-02-07 16:36:57

回答

48

我想通了。這是我在設置新的IIS應用程序時從我的清單中遺漏的東西:選擇應用程序,雙擊「身份驗證」,選擇「匿名身份驗證」,然後選擇編輯,然後將其更改爲使用應用程序池標識。確保用戶對包含該網站的文件夾具有其他人所說的權限。

+0

非常感謝! – darren 2012-08-15 14:01:16

+0

感謝您回答關於這個大問題的自己的問題:) 「您的清單」是一個官方/毫秒「待辦事項」或我可以得到關於網站發佈的東西的更多信息?再次感謝你! – FabianSilva 2014-03-20 16:11:17

+0

非常感謝,我已經配置了很多服務器和網站,但之前沒有遇到過這個問題,但是今天有了客戶端的服務器。它讓我難倒了一個小時,直到遇到你的帖子。乾杯。 – Paul 2017-01-30 22:14:32

4

我也有過這個問題,它不是asp.net授權是問題,它是文件系統中的文件的權利。

您需要確保網站在有權訪問文件的帳戶下運行。對於我的內部測試,我通常會讓網站在我的帳戶下運行,但是如果您公開託管它,我認爲這不是一個好主意安全方面的明智之舉。您可以在高級設置 - >網站的物理路徑憑證下進行設置。

+0

機器的所有用戶都可以物理訪問網站路徑。 – 2012-02-07 14:52:13

+0

但是默認情況下,該網站沒有以本機的任何用戶身份運行。至少它不適合我。當沒有人在網站上登錄時,它以匿名用戶身份運行,除非我另有指定 – 2012-02-07 15:02:01

+0

但是,如果在iis中放置「啓用匿名用戶」並將其設置在web.config中,則不需要其他任何東西,不是嗎? (允許訪問匿名用戶) – 2012-02-07 16:39:59

1

我同意Mikael它可能是文件訪問權限;嘗試授予Everyone帳戶的權限,並且如果它可以解決您的問題 - 找出IIS使用的應用程序池的哪個帳戶,併爲其授予權限。

此外,如果它不起作用,請嘗試將web.config文件放入文件夾腳本和內容中,僅限authorization屬性。

還有一點可能性,你以某種方式推翻了你的路由,並截獲了真實的文件請求。

+0

我給每個人的權限,並把web.config文件內的文件夾腳本和內容,沒有任何改變。 =/ – 2012-02-07 18:22:19

+0

當您嘗試訪問您的文件時,您的確切錯誤消息是什麼樣的? – 2012-02-08 13:46:28

+0

我沒有收到錯誤消息,頁面只被重定向到登錄頁面。 – 2012-02-08 13:51:28

3

嘗試允許內容的路徑,你的腳本和CSS文件存儲:

<configuration> 
    <location path="content" allowOverride="true"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 
    <system.web> 
    <authorization> 
     <allow roles="admin" /> 
     <deny users="?" /> 
    </authorization> 
    </system.web> 
</configuration> 
+0

這個問題已經回答。 – 2013-09-24 17:55:05

0

IUSR通常是默認模擬用戶配置爲匿名身份驗證。如果是這種情況,我會確保IUSR已經讀取了相關文件夾的權限。

您可以配置站點以使用不同的用戶,但我不確定我是否簡單地將站點切換爲以應用程序池用戶身份運行。應用程序池用戶通常比匿名用戶擁有更多的權限。

2

我發現你已經知道了,你很滿意你的答案。

我也有這個問題,但它不是一個應用程序池身份驗證問題。相反,我只允許所有用戶訪問css/js文件的位置,因此至少登錄頁面將適當呈現,直到用戶登錄。

例如,通過把這個web.config文件中/網站/公共的根(或任何你需要的CSS & js文件收集)

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.web> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 
</configuration> 
0

要跟進接受的答案,你可以添加在裏面的authentication標籤位置,以便在部署新機器時不必在IIS中手動設置。這隻顯示一條路徑,但很容易將其複製到其他路徑,如~/Scripts,~/Fonts或您想要參考的任何其他靜態內容。

<location path="Content" allowOverride="true"> 
    <!-- Authorize all users --> 
    <system.web> 
    <authorization> 
     <allow users="*" /> 
    </authorization> 
    </system.web> 

    <!-- Authenticate anonymous users --> 
    <system.webServer> 
    <security> 
     <authentication> 
     <anonymousAuthentication enabled="true" /> 
     </authentication> 
    </security> 
    </system.webServer> 
</location>