为什么根本没有创建 IIS 应用程序池?
Why the IIS application pool is not created at all?
下面有一些非常错误的地方,但我就是想不通是什么。
尽管该网站创建起来很吸引人,但根本没有创建应该与之关联的应用程序池。
public string Create(string sitename)
{
try
{
using (ServerManager serverMgr = new ServerManager())
{
string strhostname = sitename + "." + domain;
string bindinginfo = ":80:" + strhostname;
if (!IsWebsiteExists(serverMgr.Sites, strhostname))
{
Site mySite = serverMgr.Sites.Add(strhostname, "http", bindinginfo, "C:\admin\" + domain);
ApplicationPool newPool = serverMgr.ApplicationPools.Add(strhostname);
newPool.ManagedRuntimeVersion = "v4.0";
newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
serverMgr.CommitChanges();
return "Website " + strhostname + " added sucessfully";
}
else
{
return "Name should be unique, " + strhostname + " already exists.";
}
}
}
catch (Exception ex)
{
return ex.Message;
}
}
我在这里做错了什么?
我不希望应用程序池名称中包含标点符号。将域添加为应用程序池名称的一部分有点不寻常 - 也许这就是来源。此处讨论了基本方法以及 appcmd
语法以在命令行上实现同样的事情 - 尝试在 cmd 行上创建应用程序池以查看您的参数是否可以接受。
Create an application pool that uses .NET 4.0
这里发生的事情是,当您创建网站时,它会自动分配给 DefaultAppPool
。
您需要做的是替换站点的 root Application
(/
) 并将其指向刚刚创建的应用程序池。
最简单的方法是先清除新站点的 Application
集合,然后添加指向您的应用程序池的新 root 应用程序。
根据您的代码片段,我将其更改为以下内容:
Site mySite = serverMgr.Sites.Add(strhostname, "http", bindinginfo, "C:\admin\" + domain);
// Clear Applications collection
mySite.Applications.Clear();
ApplicationPool newPool = serverMgr.ApplicationPools.Add(strhostname);
newPool.ManagedRuntimeVersion = "v4.0";
newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
// Create new root app and specify new application pool
Application app = mySite.Applications.Add("/", "C:\admin\" + domain);
app.ApplicationPoolName = strhostname;
serverMgr.CommitChanges();
下面有一些非常错误的地方,但我就是想不通是什么。 尽管该网站创建起来很吸引人,但根本没有创建应该与之关联的应用程序池。
public string Create(string sitename)
{
try
{
using (ServerManager serverMgr = new ServerManager())
{
string strhostname = sitename + "." + domain;
string bindinginfo = ":80:" + strhostname;
if (!IsWebsiteExists(serverMgr.Sites, strhostname))
{
Site mySite = serverMgr.Sites.Add(strhostname, "http", bindinginfo, "C:\admin\" + domain);
ApplicationPool newPool = serverMgr.ApplicationPools.Add(strhostname);
newPool.ManagedRuntimeVersion = "v4.0";
newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
serverMgr.CommitChanges();
return "Website " + strhostname + " added sucessfully";
}
else
{
return "Name should be unique, " + strhostname + " already exists.";
}
}
}
catch (Exception ex)
{
return ex.Message;
}
}
我在这里做错了什么?
我不希望应用程序池名称中包含标点符号。将域添加为应用程序池名称的一部分有点不寻常 - 也许这就是来源。此处讨论了基本方法以及 appcmd
语法以在命令行上实现同样的事情 - 尝试在 cmd 行上创建应用程序池以查看您的参数是否可以接受。
Create an application pool that uses .NET 4.0
这里发生的事情是,当您创建网站时,它会自动分配给 DefaultAppPool
。
您需要做的是替换站点的 root Application
(/
) 并将其指向刚刚创建的应用程序池。
最简单的方法是先清除新站点的 Application
集合,然后添加指向您的应用程序池的新 root 应用程序。
根据您的代码片段,我将其更改为以下内容:
Site mySite = serverMgr.Sites.Add(strhostname, "http", bindinginfo, "C:\admin\" + domain);
// Clear Applications collection
mySite.Applications.Clear();
ApplicationPool newPool = serverMgr.ApplicationPools.Add(strhostname);
newPool.ManagedRuntimeVersion = "v4.0";
newPool.ManagedPipelineMode = ManagedPipelineMode.Integrated;
// Create new root app and specify new application pool
Application app = mySite.Applications.Add("/", "C:\admin\" + domain);
app.ApplicationPoolName = strhostname;
serverMgr.CommitChanges();