2016-06-14 168 views
1

我的问题是,我有这个Web服务EService,在我的调试项目中工作真的很棒,但是当我将它实现到WinForm项目中,并将服务放在服务器。客户端崩溃时出现此错误?WCF:无法让我的Web服务工作,在服务器上

An unhandled exception of type 'System.InvalidOperationException' 
occurred in System.ServiceModel.dll 

Could not find default endpoint element that references contract '{0}' 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> 
<bindings> 
    <basicHttpBinding> 
    <binding name="BasicHttpBinding_IEService" /> 
    </basicHttpBinding> 
</bindings> 
<client> 
    <endpoint address="http://Domane.dk/EService.svc" binding="basicHttpBinding" 
     bindingConfiguration="BasicHttpBinding_IEService" contract="IEService" 
     name="BasicHttpBinding_IEService" /> 
</client> 

的Web.config

<system.serviceModel> 
<behaviors> 
    <serviceBehaviors> 
    <behavior> 
     <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> 
     <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
     <serviceDebug includeExceptionDetailInFaults="false" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<protocolMapping> 
    <add binding="basicHttpBinding" scheme="http" /> 
    <add binding="basicHttpsBinding" scheme="https" /> 
</protocolMapping> 
<bindings> 
    <basicHttpBinding> 
    <binding name="" maxReceivedMessageSize="2147483647" maxBufferSize="2147483647" transferMode="Streamed"> 
     <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" /> 
    </binding> 
    </basicHttpBinding> 
</bindings> 
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" /> 

的方式即时调用它

using (var test = new EServiceAPI.EServiceClient()) 
     { 
      test.OpdaterLeastDatoWinPLC(connstr); 
     } 

我不能说它失败的原因。对不起,这是一个新的。是的,我已经收获了2天的互联网试图找到一个现在的解决方案。

回答

1

我在一个dll使用Web服务时有同样的问题。 试试这个:

using (var test = CreateWebServiceInstance("http://url.to.mywebservice.com")) 
    { 
     test.OpdaterLeastDatoWinPLC(connstr); 
    } 

输入正确的网址,以Web服务上面,并使用下面的代码创建客户端。您仍然需要将Web服务添加到项目中,以便为您创建EServiceClient类。

internal static EServiceAPI.EServiceClient CreateWebServiceInstance(string url) { 
     BasicHttpBinding binding = new BasicHttpBinding(); 
     binding.SendTimeout = TimeSpan.FromMinutes(10); 
     binding.OpenTimeout = TimeSpan.FromMinutes(1); 
     binding.CloseTimeout = TimeSpan.FromMinutes(1); 
     binding.ReceiveTimeout = TimeSpan.FromMinutes(20); 
     binding.AllowCookies = false; 
     binding.BypassProxyOnLocal = false; 
     binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard; 
     binding.MessageEncoding = WSMessageEncoding.Text; 
     binding.TextEncoding = Encoding.UTF8; 
     binding.TransferMode = TransferMode.Buffered; 
     binding.UseDefaultWebProxy = true; 
     binding.MaxReceivedMessageSize = 5242880; 
     return new EServiceAPI.EServiceClient(binding, new EndpointAddress(url)); 
    } 

如果有效,您可以修改上述设置以更好地满足您的需求。

+0

我不知道如何或为什么,但这个工程。非常感谢你 – Christian

0

我认为这与<endpoint address="http://Domane.dk/EService.svc"有关,我相信它应该是在服务器上使用时的相对路径。

像: <endpoint address="./EService.svc"

相关问题