嗨,我知道这个主题在类似主题上可能看起来很熟悉,但我可以告诉你,经过一整天的搜索相关问题,我来寻求帮助,因为没有一个建议的解决方案适用于我
我创建了一个 WCF REST服务应用程序,只有一个在我的计算机上本地运行的服务以及一个消耗它的 ASP.NET WebForm客户端(两者都在Windows 7上的VS 2013的单个实例。
服务的所有操作都完好无损。
问题:当我尝试使用客户端上的服务参考来访问此服务时,例如:
AuthorRESTServiceClient service = new AuthorRESTServiceClient("AuthorServiceBinding");
string value = service.Test(); //GET operation that should return a "Hello World"
然后客户端抛出EndpointNotFoundException
:
没有终点收听 http://localhost:49414/AuthorRESTService.svc可以接受 信息。这通常是由错误的地址或SOAP操作引起的。 有关更多详细信息,请参阅InnerException(如果存在)。
并包含内部WebException
:
远程服务器返回错误:(404)Not Found
以下是 WCF服务应用服务器 Web.config 的部分代码:
<system.serviceModel>
<services>
<service name="WCFAuthorEntryService.AuthorRESTService">
<endpoint address=""
binding="webHttpBinding"
contract="WCFAuthorEntryService.IAuthorRESTService"
behaviorConfiguration="web">
</endpoint>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
此处是 ASP.NET Webform 客户端 Web.config
的部分代码 <system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="AuthorServiceBinding"/>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://localhost:49414/AuthorRESTService.svc"
binding="basicHttpBinding"
bindingConfiguration="AuthorServiceBinding"
contract="AuthorServiceReference.IAuthorRESTService"
name="AuthorServiceBinding"/>
</client>
</system.serviceModel>
我做错了什么?任何帮助将不胜感激。
答案 0 :(得分:1)
您没有指定服务端点地址,而是将其留空。将服务配置文件中address
元素中的endpoint
属性设置为您在客户端配置中设置的相同值。此外,根据您托管WCF服务的方式,您可能需要设置服务基地址。
答案 1 :(得分:1)
作为可能出现的问题,有三件事可以突显出来:
<add binding="basicHttpsBinding" scheme="https" />
,但客户端中的URL使用&#34; http&#34;。答案 2 :(得分:0)
尝试在客户端项目上添加REST服务的Web引用,它将自动对您的客户端web.config进行一些更改,并从WCF web.config文件中删除协议映射部分。这可能会对你有帮助。