我在C#中使用Microsoft.Web.Administration部署网站。我部署到单个服务器,并使用DFS和IIS共享配置能够将我的更改传播到位于负载均衡器后面的其他服务器。
这一切都运行良好一段时间,然后我开始遇到问题。在代码与之对话的服务器上很好,但在其他服务器上,应用程序池将不会自动作为代码部署的一部分启动,也可以通过进入每个服务器并在控制台中按start来手动启动。
The object identifier does not represent a valid object.
我目前的解决方法是在控制台中打开应用程序池(双击),然后按确定,不做任何其他操作,然后我就可以启动它并且网站可以正常工作。
请注意,如果我在任何服务器上手动创建应用程序池,其他服务器上也会出现同样的问题,因此我不认为这是部署方面的代码问题。
查看正在复制的共享配置文件,在应用程序池上执行打开和关闭之前和之后无论如何都没有更改。
事件日志中没有任何消息证明是有用的,而且我在网上搜索我只发现另外一个人在谈论类似的东西,而且该线程仍未解决。错误信息含糊不清,搜索它会带回各种各样的东西,但这些都不是我所经历的。
这是在Windows Server 2012,IIS 8.5
上第一次发帖,如果我错过了某些内容或其他任何我很感激的反馈,谢谢。
答案 0 :(得分:0)
此代码解决了问题,希望它可以帮助某人。
$sites = Get-Website | where {$_.state -eq $null}
$sites | ForEach-Object {
$siteName = $_.name
$appPoolName = $_.applicationPool
IF (($siteName -ne $NULL) -and ($appPoolName -ne $NULL)){
Set-ItemProperty "IIS:\Sites\$siteName" ApplicationPool $appPoolName
}
}