C# iis6中的mass.net更新
我们有大约200个网站(在3个独立的服务器上,总共600个),我们需要更新才能在.NET4框架上运行。它们当前设置为在.NET2上运行。有人知道有没有办法用c#控制台程序实现这一点吗?谢谢 编辑:我找到了一个名为IIS元数据库资源管理器的工具。我将其与前一段时间在IIS6中找到的用于设置站点的代码一起使用,得到了以下代码。希望它能对其他人有所帮助 我可以这样称呼它C# iis6中的mass.net更新,c#,iis-6,C#,Iis 6,我们有大约200个网站(在3个独立的服务器上,总共600个),我们需要更新才能在.NET4框架上运行。它们当前设置为在.NET2上运行。有人知道有没有办法用c#控制台程序实现这一点吗?谢谢 编辑:我找到了一个名为IIS元数据库资源管理器的工具。我将其与前一段时间在IIS6中找到的用于设置站点的代码一起使用,得到了以下代码。希望它能对其他人有所帮助 我可以这样称呼它 UpdateSiteToDotNet4("mytestsite", "mywebserver", @"D:\inetpub\wwwr
UpdateSiteToDotNet4("mytestsite", "mywebserver", @"D:\inetpub\wwwroot\", "DotNet4");
private void UpdateSiteToDotNet4(string siteName, string server, string serverPath, string newAppPoolId)
{
var service = new DirectoryEntry("IIS://" + server + "/W3SVC");
DirectoryEntries sites = service.Children;
bool found = false;
foreach (DirectoryEntry siteEntry in sites)
{
var siteId = siteEntry.Name;
DirectoryEntries siteSettings = siteEntry.Children; //Root
foreach (DirectoryEntry siteSetting in
from DirectoryEntry siteSetting in siteSettings
where siteSetting.SchemaClassName == "IIsWebVirtualDir"
let siteRoot = siteSetting.Properties["Path"][0].ToString()
where siteRoot.ToLower().Trim() == (serverPath + siteName).ToLower().Trim()
select siteSetting)
{
siteSetting.Properties["AppPoolId"].Value = newAppPoolId;
siteSetting.CommitChanges();
//Update to version v4.0.30319
var aspnet = string.Format(@"{0}\Microsoft.NET\Framework\v{1}\aspnet_regiis.exe", Environment.GetEnvironmentVariable("windir"), "4.0.30319");
var startInfo = new ProcessStartInfo(aspnet)
{
Arguments = string.Format("-sn \"{0}\"", "W3SVC/" + siteId + "/Root"),
WindowStyle = ProcessWindowStyle.Hidden,
UseShellExecute = false,
CreateNoWindow = true
};
var process = new Process { StartInfo = startInfo };
process.Start();
process.WaitForExit();
process.Dispose();
found = true;
break;
}
if (found) break;
}
}
你能以此作为升级的借口吗?也许可以使用IIS 7.5启动新的服务器,并使用最新的窗口-IIS 6没有很多好的管理功能。然后将网站迁移到新服务器?我希望。。。但是没有。我看到了这篇文章-但我不知道如何为每个站点找出字符串的第一部分。。。“../1/…”\windows\microsoft.net\framework\v2.0.50727\aspnet\u regiis.exe-s“w3svc/1/root/MyVirtualDirectoryName”