web-dev-qa-db-ja.com

コントラクトを参照するデフォルトのエンドポイント要素が見つかりませんでした-ホスティングwcf

このサイトに1つのwcfサービスがあります http://wswob.somee.com/wobservice.svc

私はwinformアプリでそのサービスを利用しようとしています。これは、サービスのインスタントを作成するときに受け取るエラーです。

com.somee.wobservice.IwobserviceClient myservice = new com.somee.wobservice.IwobserviceClient();

エラー:

Could not find default endpoint element that references contract
'com.somee.wobservice.Iwobservice' in the ServiceModel client configuration section. This 
might be because no configuration file was found for your application, or because no 
endpoint element matching this contract could be found in the client element.

App.configファイルを検索して変更しました。

<system.serviceModel>
<behaviors>
  <endpointBehaviors>
    <behavior name="wobservice">
      <clientVia />
    </behavior>
  </endpointBehaviors>
</behaviors>

<client>
  <endpoint
      name="wobservice"
      address="http://wswob.somee.com/wobservice.svc"
      binding="webHttpBinding"
      contract="com.somee.wobservice"
      behaviorConfiguration="wobservice" />
</client>

</system.serviceModel>
</configuration>

そして、wcfフォルダー内の私のweb.config:

<system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceMetadata httpGetEnabled="true"/>

          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>

        <endpointBehaviors>
            <behavior name="Web">
                <webHttp/>
            </behavior>
        </endpointBehaviors>
    </behaviors>

      <serviceHostingEnvironment  multipleSiteBindingsEnabled="true">
          <baseAddressPrefixFilters>
              <add prefix="http://wswob.somee.com/"/>
          </baseAddressPrefixFilters>
      </serviceHostingEnvironment>

      <bindings>
          <webHttpBinding>
              <binding>
                  <security mode="None" />
              </binding>
          </webHttpBinding>
      </bindings>

      <protocolMapping>
           <add binding="basicHttpsBinding" scheme="https"/>
           <add binding="basicHttpBinding" scheme="http"/>
      </protocolMapping>

      <services>
           <service name="wobwcf.wobservice">
              <endpoint address="" 
                        binding="webHttpBinding" 
                        behaviorConfiguration="Web" 
                        contract="wobwcf.Iwobservice" />
           </service>
      </services>
   </system.serviceModel>

どの部分が間違っていたのかよくわかりません。私のwcfの経験はたった1週間です...

4

ライブラリプロジェクトのapp.configからsystem.serviceModelセクションをコピーし、web.configに配置して、サービス参照を更新します。この回答も参照してください。 デフォルトのエンドポイント要素が見つかりませんでした

16
Edis

以下のように、WCFサービスのweb.configファイルに「WSHttpBinding」エンドポイントを追加します

 <endpoint address="web" behaviorConfiguration="jsonBehavior" binding="webHttpBinding" bindingConfiguration="webHttpBindingWithJsonP" contract="DataService.IDataService"/>
 <endpoint address="" binding="wsHttpBinding" bindingConfiguration="wsHttpBinding" contract="DataService.IDataService"  />

そしてあなたのapp.configファイルに以下のようなコードを書いてください

<system.serviceModel>
<bindings>
  <wsHttpBinding>
    <binding name="WSHttpBinding_IDataService" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647">
      <security mode="None" />
    </binding>
  </wsHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost/pricedataservice/DataService.svc" binding="wsHttpBinding"
      bindingConfiguration="WSHttpBinding_IDataService" contract="DataService.IDataService"
      name="WSHttpBinding_IDataService" />
</client>

これで問題が解決すると確信しています。以下のブログは、WCFサービスのさまざまな種類のバインディングを理解するのに役立ちます。

http://www.dotnet-tricks.com/Tutorial/wcf/VE8a200713-Understanding-various-types-of-WCF-bindings.html

0
Rachit Patel

以下のように、クライアントのweb.configファイルにクライアント定義を追加します。

 <system.serviceModel>
  /////
 <client>
         <endpoint  address="referencedurl"
          binding="webHttpBinding" bindingConfiguration=""
          contract="MemberService.IMemberService"
          name="MemberServiceEndPoint"
          behaviorConfiguration="Web">
      </endpoint>
 </client> 
////
 </system.serviceModel>

ANDサービス参照名は、インターフェイスプレフィックスと同じである必要があります。 Contract = "ReferenceName。IMemberService"

0
oyenigun