16

これが殴り殺されたことは知っていますが、これを正常に機能させることができません。複数のコントラクトを持つ WCF サービスがあります。http://merlin.com/CompanyServices/CompanyWcfService.svc/Get_Document_Dates_Received/223278 私はこの WCF サービスを InfoPath フォームと Nintex ワークフローで正常に使用しました。 ここで、 http: //www.webcodeexpert.com/2013/04/how-to-create-and-consume-wcf-services.html で行ったような単純な ASP.Net アプリケーションを作成します。記事に記載されているように、サービス参照を追加できました。フォームにボタンを追加し、Button1_Clickイベントに次のコードを追加しました。

protected void Button1_Click(object sender, EventArgs e)
{
    ServiceReference1.CompanyWcfServiceClient x = new ServiceReference1.CompanyWcfServiceClient();
    var result = x.Get_Document_Dates_Received("223278");
}

ボタンをクリックすると、次のエラーが表示されます。

「ServiceModel クライアント構成セクションで、コントラクト 'ServiceReference1.ICompanyWcfService' を参照するデフォルトのエンドポイント要素が見つかりませんでした。これは、アプリケーションの構成ファイルが見つからなかったか、このコントラクトに一致するエンドポイント要素がクライアント要素で見つからなかったためである可能性があります。 ."

そこで、web.config に以下を追加してみました (CompanyWcfService の web.config ファイルから直接コピー)。

<system.serviceModel>
<services>
  <service name="CompanyWcfServices.CompanyWcfService" behaviorConfiguration="ServiceBehavior">
    <endpoint address="" binding="webHttpBinding" contract="CompanyWcfServices.ICompanyWcfService" behaviorConfiguration="webHttpEndpointBehavior" >
      <identity>
        <dns value="localhost"/>
      </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">                                                                
    </endpoint>
  </service>
</services>
<bindings>
  <webHttpBinding>
    <binding>
      <security mode="None">
      </security>
    </binding>
  </webHttpBinding>
</bindings>
<behaviors>
  <endpointBehaviors>
    <behavior name ="webHttpEndpointBehavior">
      <webHttp helpEnabled ="true" faultExceptionEnabled="true" automaticFormatSelectionEnabled="true"/>
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="ServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
    <behavior name="">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>

まったく同じエラーが発生します。何か他のことが起こっている必要があります。

私は最終的にあきらめて、次のようにサービスを呼び出しました:

HttpWebRequest request = WebRequest.Create(@"http://merlin/Companyservices/CompanyWcfService.svc/Get_Document_Dates_Received/223278") as HttpWebRequest;
request.Credentials = CredentialCache.DefaultCredentials;
HttpWebResponse response = null;

var result = "";
try
{
    response = request.GetResponse() as HttpWebResponse;
    if (response.StatusCode == HttpStatusCode.OK)
    {
        using (Stream stream = response.GetResponseStream())
        {
            StreamReader reader = new StreamReader(stream, Encoding.UTF8);
            result = reader.ReadToEnd();
        }
    }
}
catch (Exception ex)
{
    result = "";
}

私は投稿を読むのに何時間も費やしましたが、ほとんどの投稿は構成情報を web.config ファイルにコピーすることを提案しています。これは私には問題があるようです (動作していないように見えるという事実に加えて)。サード パーティの WCF サービスを使用する必要がある場合はどうすればよいですか? サードパーティに構成情報を要求する必要はありますか? また、Visa Versa では、サード パーティが使用するように設計された WCF サービスを作成する場合、サード パーティにも構成ファイルを提供する必要がありますか?

4

7 に答える 7

14

階層化されたアーキテクチャがある場合は、次のことを確認してください。

1) add app.config in "all projects"
2) add service config details in all app.config
3) run the project
于 2014-02-24T12:34:11.043 に答える
3

app.config からデフォルトの web.config にバインディングとクライアントの値を追加すると、問題が解決しました。

于 2015-06-08T14:27:26.517 に答える
1

実際、これに対する秘訣は、svcutil.exe を使用してプロキシを作成することでした。Visual Studioの「サービスの追加」ウィザードを使用してプロキシを作成しようとしていました。それができたら、設定は簡単でした。

SvcUtil.exe

于 2014-02-25T15:00:34.917 に答える