我有托管WCF服务的win-service。 Win-service正在计算机“MyComp1”上运行。 WCF服务App.config看起来像:
<baseAddresses>
<add baseAddress="http://localhost:8732/MyService" />
</baseAddresses>
当我尝试从该服务导入WSDL时(例如使用Delphi WSDLImp.exe)我收到的错误如“无法导入http://localhost:8732/MyService?xsd=xsd0”而且它是正确的行为导致服务未在localhost上运行。但是生成的WSDL中的XSD位置包含类似localhost的地址。
现在我想在安装过程中或运行时修改baseAddress,因为我不希望用户手动编辑App.config。 我听说过FlatWSDL,但还有其他技术吗?
答案 0 :(得分: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表达式。希望这会有所帮助。