在.NET2中使用WCF
我有一个连接和使用WCF方法的方法,它在HTTPS上,需要.NET4中的用户名和密码。 现在我需要做同样的事情,但是在.NET2中,我似乎无法让它工作。我不断得到下面的错误。有人能帮忙吗 错误 {“基础连接已关闭:接收时发生意外错误。”} 内部异常 {“无法从传输连接读取数据:远程主机强制关闭了现有连接。”} .Net 4原始代码:在.NET2中使用WCF,wcf,.net-2.0,wshttpbinding,Wcf,.net 2.0,Wshttpbinding,我有一个连接和使用WCF方法的方法,它在HTTPS上,需要.NET4中的用户名和密码。 现在我需要做同样的事情,但是在.NET2中,我似乎无法让它工作。我不断得到下面的错误。有人能帮忙吗 错误 {“基础连接已关闭:接收时发生意外错误。”} 内部异常 {“无法从传输连接读取数据:远程主机强制关闭了现有连接。”} .Net 4原始代码: WSHttpBinding myBinding = new WSHttpBinding(); myBinding.S
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();
.NET2代码
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,现在我知道.NET2不支持它。我的工作是在WCF的Web.config中将绑定从wsHttpBinding更改为basicHttpBinding 要做到这一点,并且不影响使用WCF的任何内容,我必须创建一个seprate子域,该子域将使用具有正确绑定的配置引用WCF “wsHttpBinding与.NET 2.0中使用的ASMX样式的web引用不兼容。”