找不到引用合同的默认端点元素
我知道这已经被打死了,但我无法按照它应该的那样工作。 我有几个合同的WCF服务。 直接调用它们时它们都可以正常工作,例如http://merlin.com/CompanyServices/CompanyWcfService.svc/Get_Document_Dates_Received/223278我已经在InfoPath Forms和Nintex Workflows上成功使用了此WCF服务。 现在我创建一个简单的ASP.Net应用程序,例如在http://www.webcodeexpert.com/2013/04/how-to-create-and-consume-wcf-services.html中完成。 我能够添加文章中描述的服务参考。 我在窗体中添加了一个按钮,并在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服务,我是否也需要为它们提供配置文件?
该错误表明您没有在客户端配置部分中定义的端点。 将服务引用添加到项目时,应为您创建客户端部分。 如果没有,则在system.serviceModel部分的web.config文件中添加以下内容
<client>
<endpoint
name="CompanyWcfService_webhttpBinding"
address="http://merlin.com/CompanyServices/CompanyWcfService.svc"
binding="webHttpBinding"
contract="CompanyWcfServices.ICompanyWcfService"
behaviorConfiguration="webHttpEndpointBehavior"
/>
</client>
如果我们有分层架构,请确保
1) add app.config in "all projects"
2) add service config details in all app.config
3) run the project
如果您的项目正在引用一个库并尝试从该库的函数中使用WCF函数,那么您可以尝试将客户端端点从项目配置文件复制到dll的配置文件。 之前发生的一些事情发生在我身上,因为我在项目中引用的库不会使用项目配置文件(其中客户端端点被配置,因为该服务正在被引用),但它自己的结果是系统找不到端点配置。
链接地址: http://www.djcxy.com/p/87197.html上一篇: Could not find default endpoint element that references contract