gpt4 book ai didi

wcf - 在 .net 2 中使用 WCF

转载 作者:行者123 更新时间:2023-12-02 03:29:08 25 4
gpt4 key购买 nike

我有一个连接和使用 WCF 方法的方法,它在 HTTPS 上并且需要 .net 4 中的用户名和密码。现在我需要做同样的事情,但是在 .Net 2 中,我似乎无法让它工作。我不断收到以下错误。谁能帮忙?

错误{“基础连接已关闭:接收时发生意外错误。”}内部异常{“无法从传输连接读取数据:现有连接被远程主机强行关闭。”

.Net 4 原代码:

            WSHttpBinding myBinding = new WSHttpBinding();
myBinding.Security.Mode = SecurityMode.Transport;
myBinding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
EndpointAddress ea = new EndpointAddress(wcfURL);
var web = new Gateway.GatewayClient(myBinding, ea);
// var web = new Gateway.GatewayClient();
XMLCrypto crypto = new XMLCrypto();


web.ClientCredentials.UserName.UserName = crypto.DecryptString(username);
web.ClientCredentials.UserName.Password = crypto.DecryptString(password);
web.Open();
web.Inbound("HOLog", message.Trim().Replace("\n", "").Replace(@"\\", ""));
web.Close();

.Net 2 代码

 XMLCrypto crypto = new XMLCrypto();
url = "http://..../gateway/gateway.svc";
userName = crypto.DecryptString(userName);
password = crypto.DecryptString(password);

var web = new Gateway.Gateway();
var credentials = new NetworkCredential(userName, password);
CredentialCache credentialCache = new CredentialCache();
credentialCache.Add(new Uri(url), "Basic", credentials);

web.Credentials = credentials;

string returnMessage = web.Inbound("LSOA", " ");

最佳答案

在网上搜索了很长时间并测试了与 WCF 方法对话的不同方式后,我找到了它不起作用的原因。

目前 WCF 设置为使用 wsHttpBinding,现在我知道 .net 2 不支持它。我的解决方法是在 WCF 的 Web.config 中将绑定(bind)从 wsHttpBinding 更改为 basicHttpBinding。

要做到这一点并且不影响使用 WCF 的任何东西,我必须创建一个单独的子域,它将使用具有更正绑定(bind)的配置引用 WCF。

“wsHttpBinding 与 .NET 2.0 中使用的 ASMX 样式 Web 引用不兼容。” How to consume WCF wsHttpBinding Service in application built in 2.0?

关于wcf - 在 .net 2 中使用 WCF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28362399/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com