下午好,请各位友好的帮助专家。目前,我正在用Microsoft.Web.Administration.ServerManager库开发一个用于在IIS中自动创建网站的应用程序,网站和应用程序池的创建是正确的,但是创建的站点并不是用所有功能创建的,而是只使用IIS和Management创建的,如果使用所有功能创建站点(IIS、Asp.Net和管理),则手动创建这些站点。我附上了IIS的部分代码和屏幕截图
private void ValidateorCreateWebsiteDumpExist(string serverAddress)
{
if (!Directory.Exists(ApiEnviromentPath.Replace("{serverAddress}", serverAddress, StringComparison.InvariantCulture)))
{
Directory.CreateDirectory(ApiEnviromentPath.Replace("{serverAddress}", serverAddress, StringComparison.InvariantCulture));
copyDirectory(ApiEnviromentBinaries,ApiEnviromentPath.Replace("{serverAddress}", serverAddress, StringComparison.InvariantCulture));
}
else
{
copyDirectory(ApiEnviromentBinaries,ApiEnviromentPath.Replace("{serverAddress}", serverAddress, StringComparison.InvariantCulture));
}
ApplicationPool newPool = null;
using (ServerManager serverManager = new ServerManager(@$"\\{serverAddress}\c$\Windows\System32\inetsrv\config\applicationHost.config"))
{
if (!serverManager.ApplicationPools.Where(x => x.Name == ApiEnviromentPoolName).Any())
{
newPool = serverManager.ApplicationPools.Add(ApiEnviromentPoolName);
newPool.AutoStart = true;
newPool.ManagedRuntimeVersion = "V4.0";
newPool.ProcessModel.IdentityType = ProcessModelIdentityType.SpecificUser;
newPool.ProcessModel.UserName = ApiEnviromentPoolUserName;
newPool.ProcessModel.Password = ApiEnviromentPoolPassword;
newPool.Enable32BitAppOnWin64 = true;
newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
serverManager.CommitChanges();
}
}
using (var iisManager = new ServerManager(@$"\\{serverAddress}\c$\Windows\System32\inetsrv\config\applicationHost.config"))
{
if (!iisManager.Sites.Where(x => x.Name == ApiEnviromentSiteName).Any())
{
var sites = iisManager.Sites.Add(ApiEnviromentSiteName, ApiEnviromentPath.Replace("{serverAddress}", serverAddress, StringComparison.InvariantCulture), Convert.ToInt32(ApiEnviromentSitePort, CultureInfo.InvariantCulture));
iisManager.Sites[ApiEnviromentSiteName].Applications[0].ApplicationPoolName = ApiEnviromentPoolName;
sites.ServerAutoStart = true;
iisManager.CommitChanges();
}
}
}
发布于 2022-03-04 18:09:21
我找到了解决方案,非常简单,我是通过比较文件中创建应用程序池的方式和现有的应用程序池的值newPool.ManagedRuntimeVersion = "V4.0“来实现的,它拼写错误,必须用v表示。
https://stackoverflow.com/questions/70777828
复制相似问题