2016-06-14 181 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"