Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# iis6中的mass.net更新_C#_Iis 6 - Fatal编程技术网

C# iis6中的mass.net更新

C# iis6中的mass.net更新,c#,iis-6,C#,Iis 6,我们有大约200个网站(在3个独立的服务器上,总共600个),我们需要更新才能在.NET4框架上运行。它们当前设置为在.NET2上运行。有人知道有没有办法用c#控制台程序实现这一点吗?谢谢 编辑:我找到了一个名为IIS元数据库资源管理器的工具。我将其与前一段时间在IIS6中找到的用于设置站点的代码一起使用,得到了以下代码。希望它能对其他人有所帮助 我可以这样称呼它 UpdateSiteToDotNet4("mytestsite", "mywebserver", @"D:\inetpub\wwwr

我们有大约200个网站(在3个独立的服务器上,总共600个),我们需要更新才能在.NET4框架上运行。它们当前设置为在.NET2上运行。有人知道有没有办法用c#控制台程序实现这一点吗?谢谢

编辑:我找到了一个名为IIS元数据库资源管理器的工具。我将其与前一段时间在IIS6中找到的用于设置站点的代码一起使用,得到了以下代码。希望它能对其他人有所帮助

我可以这样称呼它

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”