簡體   English   中英

無法從客戶端連接到WCF服務

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM