0

WCFサービスをホストするwinサービスがあります。Winサービスはコンピューター「MyComp1」で実行されています。WCFサービスのApp.configは次のようになります。

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

そのサービスからWSDLをインポートしようとすると(たとえば、Delphi WSDLImp.exeを使用して)、 「 http:// localhost:8732 / MyService?xsd=xsd0をインポートできませんでした」などのエラーが発生します。これは正しい動作です。サービスがローカルホストで実行されていない原因です。ただし、生成されたWSDL内のXSDの場所には、ローカルホストのようなアドレスが含まれています。

ここで、ユーザーがApp.configを手動で編集することを望まないため、セットアップ中または実行時にbaseAddressを変更します。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 に答える