首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >问题Asp.net C#-使用Microsoft.Web.Administration.ServerManager创建网站

问题Asp.net C#-使用Microsoft.Web.Administration.ServerManager创建网站
EN

Stack Overflow用户
提问于 2022-01-19 21:14:11
回答 1查看 78关注 0票数 0

下午好,请各位友好的帮助专家。目前,我正在用Microsoft.Web.Administration.ServerManager库开发一个用于在IIS中自动创建网站的应用程序,网站和应用程序池的创建是正确的,但是创建的站点并不是用所有功能创建的,而是只使用IIS和Management创建的,如果使用所有功能创建站点(IIS、Asp.Net和管理),则手动创建这些站点。我附上了IIS的部分代码和屏幕截图

代码语言:javascript
运行
复制
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();
            }
        }

        



    }

人工创建的站点

自动创建站点

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-04 18:09:21

我找到了解决方案,非常简单,我是通过比较文件中创建应用程序池的方式和现有的应用程序池的值newPool.ManagedRuntimeVersion = "V4.0“来实现的,它拼写错误,必须用v表示。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70777828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档