web-dev-qa-db-ja.com

C#サーバー側からasmxを呼び出す:このコントラクトに一致するエンドポイント要素がクライアント要素に見つかりました

Srv1にasmx webSerivceを作成しました。 srv2でasp.netのbllプロジェクト(元のテキスト:asp.net)プロジェクトを作成しました。両方が同じWebドメインでホストされています

asp.netのbllプロジェクト(元のテキスト:asp.net(c#)コードビハインド)からasmxを呼び出します。

1)Web参照を追加しましたが、参照サービスを実際に呼び出す方法についてのチュートリアルが見つかりませんでした。

私が試してみました:

private void GetTemplateComponentsData()
{
    var service = new ServiceReference.GetTemplateParamSoapClient();
    TemplateParamsKeyValue[] responsArray = service.GetTemplatesParamsPerId(id);

    foreach (var pair in responsArray)
    {
        TemplateComponentsData.Add(pair.Key, pair.Value);
    }
}

ただし、最初の行の実行時に次のエラーが発生します:ServiceModelクライアント構成セクションでコントラクト 'ServiceReference.GetTemplateParamSoap'を参照するデフォルトのエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったためか、このコントラクトに一致するエンドポイント要素がクライアント要素で見つからなかったため)

私は何が欠けていますか?

2)asp.net projとasmxを1つのドメインから別のドメインに一緒に移行します。このWebサービスを比較的参照する方法はありますか?

20
Elad Benda

わかりました、あなたのシナリオを言い換えて、私がそれを正しくしたことを確認させてください:

  1. あるドメインでホストされているASMX Webサービスがあります。
  2. WCFクライアント(svcutil)を使用してこのASMX Webサービスを使用する同じドメインまたは異なるドメイン(実際には問題ではない)でホストされているASP.NETアプリケーションがあります。

最初のステップは、ASMXサービスのWSDLを指すことにより、ASP.NETアプリケーションにサービス参照を追加することです。

enter image description here

これは2つのことを行います。

  • WebアプリケーションにServiceReferenceを追加します

enter image description here

  • Web.configを変更し、クライアントエンドポイントを含めます。

    <client>
      <endpoint address="http://ws.cdyne.com/NotifyWS/phonenotify.asmx"
        binding="basicHttpBinding" bindingConfiguration="PhoneNotifySoap"
        contract="ServiceReference1.PhoneNotifySoap" name="PhoneNotifySoap" />
      <endpoint address="http://ws.cdyne.com/NotifyWS/phonenotify.asmx"
        binding="customBinding" bindingConfiguration="PhoneNotifySoap12"
        contract="ServiceReference1.PhoneNotifySoap" name="PhoneNotifySoap12" />
    </client>
    

これで、アプリケーションからこのサービスを呼び出す場合、使用するエンドポイントを選択する必要があります。

using (var client = new ServiceReference1.PhoneNotifySoapClient("PhoneNotifySoap"))
{
    var result = client.GetVersion();
}

次に、コードスニペットを実際のサービス名に置き換えます。

40
Darin Dimitrov