我正在嘗試將網域使用者帳戶設定為 IIS 8 (Windows 2012) 中的應用程式集區識別碼。當使用 IIS 管理控制台嘗試此操作時,我總是收到錯誤:
值未落在預期範圍內。
嘗試使用 appcmd.exe 設定身份時,設定使用者名稱和密碼的命令或僅設定密碼的命令都會失敗。設定用戶名沒有問題。
嘗試設定使用者名稱和密碼 [失敗]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username /[name='AppPoolName'].processModel.password:P4ssW0rd
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
嘗試僅設定使用者名稱 [SUCCESS]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.userName:DOMAIN\Username
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
成功設定使用者名稱後嘗試設定密碼[FAIL]:
>appcmd set config /section:applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd
Applied configuration changes to section "system.applicationHost/applicationPools" for "MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
ERROR ( hresult:80070057, message:Failed to commit configuration changes. The parameter is incorrect. )
我將網域使用者新增至 IIS_IUSRS 群組並允許其「作為服務登入」。
有什麼建議我可能做錯了什麼嗎?
答案1
按照如何設定 IIS Web 應用程序,使其無需 AD 即可存取網路共用?
我遇到了同樣的問題,但無法以明文形式輸入密碼,所以我進一步挖掘並找到了這篇文章: 自訂 IIS 應用程式集區識別:值不在預期範圍內
診斷的關鍵步驟是查看正確的事件:
為了弄清楚如何解決這個問題,我進入了事件檢視器。應用程式日誌中沒有任何內容,因此我轉到“應用程式和服務日誌”=>“Microsoft”=>“Windows”=>“IIS 配置”。這裡的日誌預設是禁用的,所以必須啟用它們。 (為此,請右鍵單擊日誌,然後選擇啟用日誌。)啟用後,重新運行設定身份的嘗試,並刷新視圖(操作窗格或 F5),瞧!結果中有兩個錯誤(事件 ID 42 和 43)。
我遇到了與文章中相同的事件錯誤:
ID 42:無法初始化「\?\C:\windows\system32\inetsrv\config\applicationHost.config」中的「IISWASOnlyAesProvider」加密提供者。請檢查您的配置。
ID 43:無法加密屬性「Microsoft.ApplicationHost.AesProtectedConfigurationProvider」。
然後我做了以下事情:
- 還原舊版的 ConfigEncKey.key 檔案(至
c:\windows\System32\inetsrv\config
) <configProtectedData><providers>
用舊的部分替換該部分(在c:\windows\System32\inetsrv\config\applicationHost.config
)
然後我可以再次為應用程式集區設定自訂標識。
答案2
您可以從另一台伺服器取得私鑰,然後透過先從另一台可用的IIS 伺服器匯出金鑰來將其匯入到此伺服器:C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis - px "iisWasKey" “C:\temp\AESKeys.xml”-pri
其次,您可以在損壞的電腦上還原該金鑰(將金鑰複製到其他伺服器並將其放在相同位置): C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis -pi "iisWasKey " "C :\temp\AESKeys.xml"
第三,編輯 c:\windows\system32\inetsrv\applicationhost.config 並使用已知工作伺服器中的 configprotecteddata 部分來取代此檔案中已有的部分。
它看起來像這個部分:
如果一切順利,您可以透過建立應用程式集區來測試它,然後前往進階設定並以 DOMAIN\user 或其他需要的使用者身分執行它。
托尼·特拉斯
答案3
檢查此應用程式集區上配置的應用程式的綁定,如果它們有任何不正確的綁定,例如。無效字元、空格等。
答案4
嘗試更改/section:applicationPools
為/section:system.applicationHost/applicationPools
並添加/commit:apphost
到末尾
appcmd 設定配置 /section:system.applicationHost/applicationPools /[name='AppPoolName'].processModel.identityType:SpecificUser /[name='AppPoolName'].processModel.password:P4ssW0rd /commit:apphostrd /commit:apphost