[英]Can't connect to WCF service from client
嘗試從ac#客戶端訪問iis(本地)中托管的WCF服務時遇到此錯誤:
在ServiceModel客戶端配置部分中找不到名稱為“ X”且合同為“合同名稱”的終結點元素。 這可能是因為找不到您的應用程序的配置文件,或者是因為在客戶端元素中找不到與該名稱匹配的端點元素。
這是客戶端的app.config(這是一個NUnit固定裝置,僅用於測試連接):
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_MyWs" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="https://localhost/MyWs/MyWs.svc"
binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_MyWs"
contract="MyServiceSvc.IMyWs"
name="BasicHttpBinding_MyWs" />
</client>
</system.serviceModel>
</configuration>
如果我瀏覽
https://localhost/MyWs/MyWs.svc?wsdl
我得到正確的輸出,因此服務器部分工作正常。
此外,我可以使用soapUI測試我的ws,因此問題必須出在客戶端,也許在app.config中。
我的客戶代碼,以防萬一有人想看它:
[TestFixture]
public class MyWsProxyFixture
{
private readonly MyWsClient _client = new MyWsClient();
[Test]
public void ProxyCreation()
{
Assert.IsNotNull(_client);
}
//More tests here
}
甚至更有趣的是,完全相同的配置和客戶端可以在另一台機器上工作。 是的,它是真的。 我本人無法相信,但事實如此。
您能給出一些提示或建議來解決這個問題嗎?
謝謝!
PS:客戶端中的服務引用很好。
據我所知,這可能是多個項目的配置問題:
如果您的解決方案中有多個項目,則必須將該配置文件放入消耗wcf服務的特定項目的配置中。
假設您有2個項目,那么將有2個相應的配置文件。
結果表明問題根本不在App.config中。
實際上,相同的App.config可以在另一台計算機上正常工作。
問題出在Nunit身上。 默認情況下,它使用“影子副本”設置,該設置將復制temp文件夾中的所有dll並從那里執行二進制文件。 我無法理解的是為什么它會復制dll,但不會復制.config。 只是沒有意義!
在將卷影副本設置為false后,它也開始在我的機器上工作。
PS:客戶端正在其他計算機上工作,因為環境在Resharper下運行,默認情況下,卷影副本處於關閉狀態。
現在有道理!
希望這可以幫助有同樣愚蠢問題的人
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.