2012-01-09 21 views
5

Tôi đang xây dựng một webservice RESTFUL và một ứng dụng consoleHost để lưu trữ webservice đó. Trong dịch vụ web RESTFUL, tôi gọi dịch vụ BingTranslate (liên kết tham chiếu tới: http://api.microsofttranslator.com/V2/Soap.svc) Máy chủ dịch vụ của tôi thành công, nhưng khi tôi gọi chức năng gọi dịch vụ BingTranslate, ngoại lệ này được ném: "Không thể tìm thấy phần tử điểm cuối mặc định tham chiếu hợp đồng 'BingTranslator .LanguageService 'trong phần cấu hình máy khách ServiceModel. Điều này có thể do không tìm thấy tệp cấu hình nào cho ứng dụng của bạn, hoặc vì không có phần tử điểm cuối nào khớp với hợp đồng này trong phần tử máy khách. " (BingTranslator là tên của dịch vụ tham khảo trong dự án RESTful)Ngoại lệ: Không thể tìm thấy phần tử điểm cuối mặc định khi gọi dịch vụ Bing dịch từ dịch vụ RESTFUL

Các app.config của dự án RESTful là:

<system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="BasicHttpBinding_LanguageService" closeTimeout="00:01:00" 
      openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
      allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536" 
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
      useDefaultWebProxy="true"> 
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" 
      maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
      <security mode="None"> 
      <transport clientCredentialType="None" proxyCredentialType="None" 
       realm="" /> 
      <message clientCredentialType="UserName" algorithmSuite="Default" /> 
      </security> 
     </binding> 
     </basicHttpBinding> 

     <webHttpBinding> 
     <binding transferMode="Streamed" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" openTimeout="00:25:00" 
       closeTimeout="00:25:00" sendTimeout="00:25:00" receiveTimeout="00:25:00" name="webBinding"> 
     </binding> 
     </webHttpBinding> 

    </bindings> 
    <client> 
     <endpoint address="http://api.microsofttranslator.com/V2/soap.svc" 
     binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_LanguageService" 
     contract="BingTranslator.LanguageService" name="BasicHttpBinding_LanguageService" /> 
    </client> 
    <services> 
     <service name="SearchService.Service1" behaviorConfiguration="SearchService.Service1Behavior"> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8732/Design_Time_Addresses/SearchService/Service1/" /> 
      </baseAddresses> 
     </host> 

     <endpoint address="" binding="webHttpBinding" contract="SearchService.IService1" 
        behaviorConfiguration="Web" bindingConfiguration="webBinding"> 

      <identity> 
      <dns value="localhost"/> 
      </identity> 
     </endpoint> 
     </service> 
    </services> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="SearchService.Service1Behavior"> 
      <serviceMetadata httpGetEnabled="True"/> 
      <serviceDebug includeExceptionDetailInFaults="False" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="Web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    </system.serviceModel> 

và file app.config của ConsoleHost như thế này:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.serviceModel> 
    <behaviors> 
     <serviceBehaviors> 
     <behavior name="NewBehavior"> 
      <serviceMetadata httpGetEnabled="true" /> 
     </behavior> 
     </serviceBehaviors> 
     <endpointBehaviors> 
     <behavior name="Web"> 
      <webHttp/> 
     </behavior> 
     </endpointBehaviors> 
    </behaviors> 
    <services> 
     <service behaviorConfiguration="NewBehavior" name="SearchService.Service1"> 
     <clear /> 
     <endpoint address="" binding="webHttpBinding" contract="SearchService.IService1" 
      behaviorConfiguration ="Web" /> 
     <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" 
      contract="IMetadataExchange" /> 
     <host> 
      <baseAddresses> 
      <add baseAddress="http://localhost:8787/searchservice" /> 
      </baseAddresses> 
     </host> 
     </service> 
    </services> 
    </system.serviceModel> 
</configuration> 

"Lỗi này có thể phát sinh nếu bạn đang gọi dịch vụ trong một thư viện lớp và gọi thư viện lớp từ một dự án khác." -> Có lẽ đây là tình huống của tôi. Nhưng tôi không biết cách sửa nó.

Tôi nên làm gì? Xin hãy giúp tôi. Cảm ơn rất nhiều. Trân trọng

Trả lời

2

Nếu bạn có trình khách dịch vụ trong một dự án thư viện lớp riêng biệt, cấu hình máy khách wcf (tức là phần system.servicemodel trong app.config) không được kế thừa bởi dự án tham chiếu. Bạn cần phải sao chép phần System.ServiceModel của app.config trong dự án thư viện lớp qua ứng dụng.config trong dự án exe.

+0

Tôi đã thực hiện. Cảm ơn bạn rất nhiều. Yeath! – Mide

+0

Xin chào..có thể bạn vui lòng gửi mã cho nó. – user3217843

Các vấn đề liên quan