使用 Visual Studio ASP.NET Web 部署:設定資料夾許可權

作者 :Tom Dykstra

下載入門專案

本教學課程系列說明如何使用 Visual Studio 2012 或 Visual Studio 2010,將 (發佈) ASP.NET Web 應用程式部署至Azure App 服務 Web Apps或協力廠商裝載提供者。 如需系列的相關資訊,請參閱系列 中的第一個教學課程。

概觀

在本教學課程中,您會在已部署的網站中設定 Elmah 資料夾的資料夾許可權,讓應用程式可以在該資料夾中建立記錄檔。

當您使用 Visual Studio 開發伺服器在 Visual Studio 中測試 Web 應用程式 (Cassini) 或IIS Express時,應用程式會在您的身分識別下執行。 您很可能是開發電腦上的系統管理員,而且擁有對任何資料夾中任何檔案執行任何動作的完整授權。 但是當應用程式在 IIS 下執行時,它會在為月臺指派給的應用程式集區所定義的身分識別下執行。 這通常是具有有限許可權的系統定義帳戶。 根據預設,它具有 Web 應用程式檔案和資料夾的讀取和執行許可權,但沒有寫入權限。

如果您的應用程式建立或更新檔案,這是 Web 應用程式中常見的需求,就會變成問題。 在 Contoso University 應用程式中, Elmah 會在 Elmah 資料夾中建立 XML 檔案,以儲存錯誤的詳細資料。 即使您未使用 Elmah 之類的內容,您的網站可能讓使用者上傳檔案或執行其他工作,將資料寫入網站中的資料夾。

提醒:如果您在進行教學課程時收到錯誤訊息或某些內容無法運作,請務必檢查 疑難排解頁面

測試錯誤記錄和報告

若要查看應用程式在 IIS (中無法正常運作的方式,雖然它在 Visual Studio) 中測試應用程式的方式,您可能會造成一般由 Elmah 記錄的錯誤,然後開啟 Elmah 錯誤記錄檔以查看詳細資料。 如果 Elmah 無法建立 XML 檔案並儲存錯誤詳細資料,您會看到空的錯誤報表。

開啟瀏覽器並移至 http://localhost/ContosoUniversity ,然後要求不正確 URL,例如 Studentsxxx.aspx。 您會看到系統產生的錯誤頁面 ,而不是 GenericErrorPage.aspx 頁面, customErrors 因為Web.config檔案中的設定是 「RemoteOnly」,而且您在本機執行 IIS:

HTTP 404 錯誤頁面

現在執行 Elmah.axd 以查看錯誤報表。 使用系統管理員帳號憑證登入之後, (「admin」 和 「devpwd」) ,您會看到空的錯誤記錄頁面,因為 Elmah 無法在 Elmah 資料夾中建立 XML 檔案:

錯誤記錄檔空白

設定 Elmah 資料夾的寫入權限

您可以手動設定資料夾許可權,也可以讓它成為部署程式的自動部分。 讓它自動需要複雜的 MSBuild 程式碼,因為您只需要在第一次部署時執行這項操作,下列步驟會如何手動執行。 (如需如何讓此部分成為部署程式的詳細資訊,請參閱在 Sayed Hashimi 的部落格 上設定 Web 發行的資料夾許可權 。)

  1. 檔案總管中,流覽至C:\inetpub\wwwroot\ContosoUniversity。 以滑鼠右鍵按一下 Elmah 資料夾,選取 [ 屬性],然後選取 [ 安全性 ] 索引標籤。

  2. 按一下 [編輯]

  3. [Elmah 的許可權] 對話方塊中,選取[DefaultAppPool],然後選取 [允許] 資料行中的 [寫入] 核取方塊。

    ELMAH 資料夾的許可權

    (如果您在[群組] 或 [使用者名稱] 清單中看不到DefaultAppPool,您可能使用本教學課程中指定的其他方法在您的電腦上設定 IIS 和 ASP.NET 4。在此情況下,請找出指派給 Contoso University 應用程式的應用程式集區所使用的身分識別,並將寫入權限授與該身分識別。請參閱本教學課程結尾的應用程式集區身分識別連結。) 在這兩個對話方塊中按一下 [確定]。

重新測試錯誤記錄和報告

(要求不正確的 URL) 並執行 [錯誤記錄 檔] 頁面,以相同方式再次測試錯誤。 這次錯誤會出現在頁面上。

ELMAH 錯誤記錄頁面

總結

您現在已完成讓 Contoso University 在本機電腦上的 IIS 中正常運作所需的所有工作。 在下一個教學課程中,您會將網站部署至 Azure,讓網站可供公開使用。

詳細資訊

在此範例中,Elmah 無法儲存記錄檔的原因相當明顯。 如果問題的原因不明顯,您可以使用 IIS 追蹤;請參閱在 IIS.net 網站上 使用 IIS 7 中的追蹤對失敗的要求進行疑難排解

如需如何將許可權授與應用程式集區身分識別的詳細資訊,請參閱 IIS.net 網站上透過檔案系統 ACL 在 IIS 中的應用程式集區身分識別和保護內容。