调用WCF Web服务时出错

时间:2015-10-01 06:32:25

标签: c# asp.net wcf

我在类库中引用了WCF服务,在Web应用程序中引用了该类库。当我尝试从服务中调用一个方法时,我遇到异常。

BasicHttpBinding binding = new BasicHttpBinding()
            binding.Security.Mode = BasicHttpSecurityMode.Transport;
            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
            binding.Name = "CoreSoapPort";
            binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;
            binding.BypassProxyOnLocal = false;
            binding.UseDefaultWebProxy = true;
            binding.MessageEncoding = WSMessageEncoding.Mtom;
            binding.AllowCookies = false;
            binding.TransferMode = TransferMode.Buffered;
            binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
            Encoding textencoding = Encoding.UTF8;
            binding.TextEncoding = textencoding;
            binding.MaxReceivedMessageSize = Int32.MaxValue;

这是我的配置

corners

我在应用程序中创建了绑定对象并传递给了服务。

corners

我尝试将配置更改为多个以匹配服务器配置。但没有运气。

2 个答案:

答案 0 :(得分:0)

您是否尝试将邮件编码配置更改为RFC5280?恕我直言,我认为你不应该使用配置文件和编程方式配置你的WCF服务,因为它会给你带来很多麻烦。我建议坚持一个,它是配置文件或以编程方式。

答案 1 :(得分:0)

由于绑定不匹配而发生错误。 您的服务器绑定是 BasicHttpBinding ,您的客户端是 CustomBinding

由于您的服务使用 BasicHttpBinding ,请尝试使用相同的绑定配置您的客户端,但是,如果您要使用Soap12,则需要将服务器端配置为 CustomBinding ,像这样:

CustomBinding binding = new CustomBinding();
            SymmetricSecurityBindingElement ssbe =
                SecurityBindingElement.CreateSspiNegotiationBindingElement(true);
            // Add the SymmetricSecurityBindingElement to the BindingElementCollection.
            binding.Elements.Add(ssbe);
            binding.Elements.Add(new TextMessageEncodingBindingElement());
            binding.Elements.Add(new HttpTransportBindingElement());

您可以在此处阅读更多内容:https://msdn.microsoft.com/en-us/library/ms730305%28v=vs.110%29.aspx

希望它有所帮助。