【问题标题】:How to programmatically add domain service end point to web.config如何以编程方式将域服务端点添加到 web.config
【发布时间】:2013-02-19 06:26:51
【问题描述】:

我需要通过 C# 以编程方式操作网站的 web.config 的帮助。有问题的站点托管了一个 Silverlight 5 应用程序,该应用程序通过 WCF RIA 服务与服务器运行时通信。

我正在编写的代码是用于测试 WCF Ria 服务堆栈的自动化构建-部署-测试场景的引导加载程序的一部分。问题在于,为了正确测试服务,单元测试代码需要能够通过新的soap 端点与 Ria 服务进行通信。

为了有效地完成这项工作,站点需要在其 bin 文件夹中复制 Microsoft.ServiceModel.DomainServices.Hosting dll,以及一个新的 soap 端点,这将使域服务配置部分如下所示:

<system.serviceModel>
    <domainServices>
        <endpoints>
            <add name="OData" .../>
            ***<add name="Soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory, Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>***
        </endpoints>
    </domainServices>
</system.serviceModel>

虽然我相信我可以通过 C# xml api 修改 web.config,但我想知道是否有其他方法可以通过 ConfigurationManager 来修改?

【问题讨论】:

  • 建议您使用 ServiceStack.com 而不是 WCF。然后,您可以随时使用您想要的任何域/网址。

标签: c# xml wcf-ria-services configurationmanager configurationsection


【解决方案1】:

我会将配置操作作为构建脚本的一部分。

我目前在我的项目中使用YDeliver 作为构建/部署框架,因为它运行在 Powershell 之上,所以我在豪华中使用xml api 操作 XML。

【讨论】:

  • 配置操作是作为部署脚本的一部分完成的,我无法更改它。在“构建”脚本中执行此操作也没有任何意义,因为测试是在运行 Windows Server 2008 R2 或 Windows Server 2012 的空白 VM 上的“构建-部署-测试”场景中完成的。此外,我无法更改安装程序,否则我必须有两个 - 一个用于测试,一个用于生产。由于我正在尝试测试生产质量代码并产生“验证测试结果”,因此由于合规性原因,使用两个完全不同的安装程序会达到目的。
  • 也是-1的原因,虽然这是一个不错的建议,但没有必要学习另一种语言;问题是 C# 特定的。此外,答案相当笼统——很明显,必须修改配置文件。这样做的问题是,当 Web 应用程序部署到 IIS 时,配置文件被 IIS 工作进程(站点运行所在的应用程序池)使用。 ConfigurationManager (System.Configuration) api和具体的ConfigSection定义提供了一种避免文件锁直接操作配置文件的方法。
  • @bleepzter - 很公平,我知道你来自哪里。到目前为止,在我的项目中,我们尝试分离关注点(应用程序仅包含业务逻辑等),并且通过 buildscripts、buildconfig 和 CI 工具完成配置管理。尽管我同意您关于拥有单个安装程序(工件)的观点,但我认为它可能是安装程序控制配置而不是应用程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-07-19
  • 1970-01-01
  • 2011-05-14
  • 2019-11-16
  • 1970-01-01
  • 2022-08-12
  • 2014-07-14
相关资源
最近更新 更多