none
IIS 7.5的ApplicationPoolIdentity虛擬帳號無法登入SQL Server RRS feed

  • 問題

  • 大家好,
            我使用IIS 7.5作為ASP.NET系統的Web Server,由於我使用ASP.NET預設的Membership Provider來進行權限控管,aspnet資料庫的連線字串採用整合式驗證,
    輸入完帳號密碼後,會出現下列錯誤訊息:
            使用者 'IIS APPPOOL\AppPoolName' 的登入失敗。
    原本想要在SQL SERVER中自行建立Login為IIS APPPOOL\AppPoolName,輸入完IIS APPPOOL\AppPoolName後檢查名稱會被改成Host Name\AppPoolName,
    設定完使用者對應後按下確定就出現下列錯誤訊息:
           登入Host Name\AppPoolName的建立失敗。
    請問各位該如何解決這個問題呢?謝謝。




    ///////////////////////////////////////
    //開發環境 //
    ///////////////////////////////////////
    //OS:Windows 7 Enterprise //
    //IDE:VS 2008 Profession SP1 //
    //.NET Framework: 3.5 SP1 //
    //DBMS:SQL Server 2008 SP1 //
    ///////////////////////////////////////

    2009年10月7日 上午 09:30

解答

  • 小喵模擬的經過是這樣
    1.用檔案系統的方式建立Web網站
    2.設定使用資料庫MS-SQL來建立會員機制
    (http://www.dotblogs.com.tw/topcat/archive/2008/03/06/1266.aspx)
    3.透過工具建立帳號、密碼
    4.透過檔案總管,將檔案系統建立的複製到Interpub的wwwroot
    5.透過IIS7.5轉該資料夾為應用程式
    7.建立對應的AppPool並設定使用該AppPool

    ==>此時出現如使用者所說的狀況
    8.進入MSSQL安全性,建立IIS AppPool使用者
    9.進入資料庫,將剛剛建立的IIS AppPool使用者加入資料庫安全性,並授權相關權限
    10.再次進行測試...可以登入成功!!


    以上模擬過程提供您參考
    ^_^
    topcat(姍舞之間的極度凝聚)http://www.dotblogs.com.tw/topcat/
    • 已標示為解答 TerryChuang 2009年10月15日 上午 07:09
    2009年10月14日 上午 08:53
    版主

所有回覆

  • 這一篇不知道對你有沒有幫助
    http://blog.miniasp.com/post/2009/09/Introduce-IIS-75-Application-Pool-Identity-and-Virtual-Account.aspx


    從保哥這篇來看,
    IIS APPPOOL\AppPoolName後檢查名稱會被改成Host Name\AppPoolName
    這應該是虛擬帳號的關係


    試看看能不能在sql中加入 DefaultAppPool 這個帳號

    2009年10月8日 上午 02:05
    版主
  • 這一篇不知道對你有沒有幫助
    http://blog.miniasp.com/post/2009/09/Introduce-IIS-75-Application-Pool-Identity-and-Virtual-Account.aspx


    從保哥這篇來看,
    IIS APPPOOL\AppPoolName後檢查名稱會被改成Host Name\AppPoolName
    這應該是虛擬帳號的關係


    試看看能不能在sql中加入 DefaultAppPool 這個帳號


    謝謝,我有看到這篇,不過他是針對檔案上傳所進行的設定,經過測試結果似乎在OS層可以認得這個虛擬帳號,但是到了SQL SERVER後就沒辦法了,
    如果不行可能我得改用SQL SERVER驗證。
    ///////////////////////////////////////
    //開發環境 //
    ///////////////////////////////////////
    //OS:Windows 7 Enterprise //
    //IDE:VS 2008 Profession SP1 //
    //.NET Framework: 3.5 SP1 //
    //DBMS:SQL Server 2008 SP1 //
    ///////////////////////////////////////
    2009年10月8日 上午 02:30
  • 比較快的方式,是您建立自己的AppPool
    並且在AppPool中,進階設定將識別改為NetworkService這樣應該就可以了

    進階一點,您可能需要改資料庫的存取帳號
    將這個虛擬帳號加入(如果您用的是SQL Server而非MDF檔案類型的)
    ^_^

    至於檔案類型的怎麼加入AppPool的虛擬帳號...小喵還在研究
    ^.^a


    topcat(姍舞之間的極度凝聚)http://www.dotblogs.com.tw/topcat/
    2009年10月8日 上午 02:45
    版主
  • HI,

    您可以看一下這一篇的討論:
    Error connecting to SQL Server from Windows 7 / Windows 2008 R2 with ASP.NET(http://blogs.iis.net/bills/archive/2009/10/07/error-connecting-to-sql-server-from-windows-7-windows-2008-r2-with-asp-net.aspx)
    2009年10月8日 上午 02:59
  • 比較快的方式,是您建立自己的AppPool
    並且在AppPool中,進階設定將識別改為NetworkService這樣應該就可以了

    進階一點,您可能需要改資料庫的存取帳號
    將這個虛擬帳號加入(如果您用的是SQL Server而非MDF檔案類型的)
    ^_^

    至於檔案類型的怎麼加入AppPool的虛擬帳號...小喵還在研究
    ^.^a


    topcat(姍舞之間的極度凝聚)http://www.dotblogs.com.tw/topcat/

    我使用的是SQL Server而非檔案類型,我也有試著要將虛擬帳號在SQL SERVER中建立Login,但是因為虛擬帳號會被SQL Server自動轉成Host Name\AppPoolName,
    而導致建立失敗,請問您是怎麼做的呢?謝謝。
    ///////////////////////////////////////
    //開發環境 //
    ///////////////////////////////////////
    //OS:Windows 7 Enterprise //
    //IDE:VS 2008 Profession SP1 //
    //.NET Framework: 3.5 SP1 //
    //DBMS:SQL Server 2008 SP1 //
    ///////////////////////////////////////
    2009年10月8日 上午 03:18
  • 其實如果是SQL Server的方式的話
    或許SQL Server上您可以將Windows驗證的方式改用SQL驗證的方式

    那麼您的帳號密碼寫在Web.Config的Connection String的方式會簡單些

    ^_^
    topcat(姍舞之間的極度凝聚)http://www.dotblogs.com.tw/topcat/
    2009年10月8日 上午 05:19
    版主
  • 另外如果SQL要保留Windows驗證的話
    可以這樣做

    SQL Server安全性→新增登入IIS AppPool\DefaultAppPool
    →Server自動轉成Host Name\AppPoolName
    此時,自己將【Host Name\AppPoolName】改為【IIS AppPool\DefaultAppPool】(名稱是可以手動敲的)

    接著,開啟您的DB資料庫
    安全性→使用者→新增使用者
    將剛剛加入的IIS AppPool\DefaultAppPool加入
    並且授權相關的權限(有很多aspnet開頭的記得要勾,至少還要reader,writer)

    這樣應該就可以了

    ^_^


    topcat(姍舞之間的極度凝聚)http://www.dotblogs.com.tw/topcat/
    2009年10月8日 上午 05:32
    版主
  • Hi,

    這個問題您解決了嗎?


    Lolota
    微軟技術支援中心 (CSS)
    2009年10月13日 上午 05:50
  • Hi,

    這個問題您解決了嗎?


    Lolota
    微軟技術支援中心 (CSS)

    不好意思,這個問題放太久沒結案,經過topcat的指導,依照他所說的辦法我仍未解決問題,稍晚我把我遇到的錯誤訊息貼上來請教大家,謝謝。
    開發環境:
    OS:Windows 7 Enterprise
    IDE:VS 2008 Profession SP1
    .NET Framework: 3.5 SP1
    DBMS:SQL Server 2008 SP1
    2009年10月13日 上午 07:17
  • 小喵模擬的經過是這樣
    1.用檔案系統的方式建立Web網站
    2.設定使用資料庫MS-SQL來建立會員機制
    (http://www.dotblogs.com.tw/topcat/archive/2008/03/06/1266.aspx)
    3.透過工具建立帳號、密碼
    4.透過檔案總管,將檔案系統建立的複製到Interpub的wwwroot
    5.透過IIS7.5轉該資料夾為應用程式
    7.建立對應的AppPool並設定使用該AppPool

    ==>此時出現如使用者所說的狀況
    8.進入MSSQL安全性,建立IIS AppPool使用者
    9.進入資料庫,將剛剛建立的IIS AppPool使用者加入資料庫安全性,並授權相關權限
    10.再次進行測試...可以登入成功!!


    以上模擬過程提供您參考
    ^_^
    topcat(姍舞之間的極度凝聚)http://www.dotblogs.com.tw/topcat/
    • 已標示為解答 TerryChuang 2009年10月15日 上午 07:09
    2009年10月14日 上午 08:53
    版主
  • 小喵模擬的經過是這樣
    1.用檔案系統的方式建立Web網站
    2.設定使用資料庫MS-SQL來建立會員機制
    (http://www.dotblogs.com.tw/topcat/archive/2008/03/06/1266.aspx)
    3.透過工具建立帳號、密碼
    4.透過檔案總管,將檔案系統建立的複製到Interpub的wwwroot
    5.透過IIS7.5轉該資料夾為應用程式
    7.建立對應的AppPool並設定使用該AppPool

    ==>此時出現如使用者所說的狀況
    8.進入MSSQL安全性,建立IIS AppPool使用者
    9.進入資料庫,將剛剛建立的IIS AppPool使用者加入資料庫安全性,並授權相關權限
    10.再次進行測試...可以登入成功!!


    以上模擬過程提供您參考
    ^_^
    topcat(姍舞之間的極度凝聚)http://www.dotblogs.com.tw/topcat/
    感謝小喵熱心的解說,依照您的做法可以順利通過驗證,謝謝。
    2009年10月15日 上午 06:57