0

我有托管 WCF 服务的 win 服务。Win 服务正在计算机“MyComp1”上运行。WCF 服务 App.config 如下所示:

      <baseAddresses>
        <add baseAddress="http://localhost:8732/MyService" />
      </baseAddresses>

当我尝试从该服务导入 WSDL(例如使用 Delphi WSDLmp.exe)时,我收到类似“无法导入http://localhost:8732/MyService?xsd=xsd0之类的错误,这是正确的行为导致该服务未在本地主机上运行。但是生成的 WSDL 中 XSD 的位置包含类似 localhost 的地址。

现在我想在设置期间或运行时修改 baseAddress,因为我不希望用户手动编辑 App.config。我听说过 FlatWSDL,但还有其他技术可以做到这一点吗?

4

1 回答 1

3

您可以使用System.Xml.XmlDocument以编程方式更改您的App.config文件。

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

xmlDoc.SelectNodes("/configuration/system.serviceModel/services/service/host/baseAddresses/add")
    .Cast<XmlNode>().ToList()
    .ForEach(o => o.Attributes["baseAddress"].Value = "http://localhost:8732/MyService");

xmlDoc.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);

只需确保使用正确的基地址XPath 表达式即可。希望这可以帮助。

于 2012-04-23T09:43:45.907 回答