【问题标题】:Programmatically configure and host WCF Service in IIS在 IIS 中以编程方式配置和托管 WCF 服务
【发布时间】:2013-07-18 09:17:30
【问题描述】:

如何以编程方式在 IIS 中配置和托管 WCF 服务。我已经创建了我的 WCF 服务示例 /WCFServices/Service1.svc"。我想以编程方式在 IIS 中配置和托管此服务。有人可以帮我吗?

【问题讨论】:

    标签: wcf wcf-hosting


    【解决方案1】:

    你想要的课程是Microsoft.Web.Administration.ServerManager

    http://msdn.microsoft.com/en-us/library/microsoft.web.administration.servermanager(v=VS.90).aspx

    它具有操作 IIS 大部分方面的方法,例如,添加应用程序池和应用程序。例如,这段代码配置了一个新的 IIS 应用程序

    //the name of the IIS AppPool you want to use for the application  - could be DefaultAppPool
    string appPoolName = "MyAppPool";
    
    //the name of the application (as it will appear in IIS manager)
    string name = "MyWCFService";
    
    //the physcial path of your application
    string physicalPath = "C:\\wwwroot\mywcfservice";
    
    
    using (ServerManager serverManager = new ServerManager())
        {
          Configuration config = serverManager.GetApplicationHostConfiguration();
          ConfigurationSection sitesSection = config.GetSection("system.applicationHost/sites");
          ConfigurationElementCollection sitesCollection = sitesSection.GetCollection();
          ConfigurationElement siteElement = sitesCollection[0]; 
          ConfigurationElementCollection siteCollection = siteElement.GetCollection();
          ConfigurationElement applicationElement = siteCollection.CreateElement("application");
          applicationElement["path"] = name;
          applicationElement["applicationPool"] = appPoolName;
          ConfigurationElementCollection applicationCollection = applicationElement.GetCollection();
          ConfigurationElement virtualDirectoryElement = applicationCollection.CreateElement("virtualDirectory");
          virtualDirectoryElement["path"] = @"/";
          virtualDirectoryElement["physicalPath"] = physicalPath;
          applicationCollection.Add(virtualDirectoryElement);
          siteCollection.Add(applicationElement);
          serverManager.CommitChanges();
        }
    

    一般来说,calss 只是 IIS 配置文件的一个薄包装。您可以通过查看现有文件来理解它,甚至可以通过查看在 IIS 管理器中手动配置服务所需执行的操作,然后将其转换为生成的配置更改。

    您可以通过这种方式完成所有(至少很多)IIS 配置(例如配置应用程序限制、启用身份验证方案等)。

    配置的 WCF 部分只是普通的 WCF。您可以在代码或配置中完成。

    【讨论】:

    • 感谢您的回复。您能否在您的代码中解释一下...名称、appPoolName 和physicalPath 指的是什么?我对名称和物理路径有点困惑。
    • 可能脚本 powershell 为 svc 扩展添加新的 MIME 类型和托管 HTTP 处理程序:gyorgybalassy.wordpress.com/2012/09/24/… ?
    【解决方案2】:
    【解决方案3】:

    您要查找的内容称为Publish。您可以从 WCF 服务项目的右键单击上下文菜单中找到它。您可以从那里发布或创建一个包以供稍后发布或将其分发到远程站点。网上有很多教程。

    如果您对此功能有任何具体问题,请随时提问。

    【讨论】:

    • 是仅发布。但我想通过编程来做到这一点......我的意思是通过一些控制台应用程序我想在 IIS 中发布我的 WCF 服务。
    • 如何使用 Powershell 和/或 C# 以编程方式发布?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2012-02-07
    • 2012-05-31
    • 1970-01-01
    • 1970-01-01
    • 2022-12-13
    • 2016-10-11
    相关资源
    最近更新 更多