我正在构建一个RESTFUL Web服务和一个consoleHost应用程序来托管该Web服务.在RESTFUL webservice中,我调用BingTranslate服务(链接参考:http://api.microsofttranslator.com/V2/Soap.svc )我的服务主机成功,但当我调用调用BingTranslate服务的函数时,抛出此异常:无法找到引用ServiceModel客户端配置部分中的合同"BingTranslator.LanguageService"的默认端点元素.这可能是因为找不到您的应用程序的配置文件,或者因为在客户端元素中找不到与此合同匹配的端点元素. " (BingTranslator是RESTFUL项目中服务引用的名称)
RESTFUL项目的app.config是:
<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>
Run Code Online (Sandbox Code Playgroud)
和ConsoleHost的app.config文件是这样的:
<?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>
Run Code Online (Sandbox Code Playgroud)
"如果您在类库中调用服务并从另一个项目调用类库,则会出现此错误." - >也许这就是我的情况.但我不知道如何解决它.
我该怎么办?请帮我.非常感谢.最好的祝福
如果服务客户端位于单独的类库项目中,则引用项目不会继承 wcf 客户端配置(即 app.config 中的 system.servicemodel 部分)。您需要将类库项目中app.config 的System.ServiceModel 部分复制到exe 项目中的app.config。