用ftpWebRequest做ftp上传,其中主要代码如下:
reqFTP.KeepAlive = false;
reqFTP.UsePassive = true;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.EnableSsl = true;
只有我吧ssl加上,就报错误“System.Net.WebException: 基础连接已经关闭: 服务器提交了协议冲突。”
怎么解决啊。服务器端用的FileZilla,证书也是用fileZilla生成的。
reqFTP.KeepAlive = false;
reqFTP.UsePassive = true;
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.EnableSsl = true;
只有我吧ssl加上,就报错误“System.Net.WebException: 基础连接已经关闭: 服务器提交了协议冲突。”
怎么解决啊。服务器端用的FileZilla,证书也是用fileZilla生成的。
解决方案 »
- 关于SQL Server 读取byte[]类型数组问题
- vs2008+sql的结账代码
- 测试一个C# Timer控件,发现个问题。请教...
- 倾家荡产,请教一个循环查询储存过程
- Toolstrip控件的使用
- 我想安装C#,但安装了几次,都没有成功,都回滚了,请问怎么安装
- 请教我能不能看到asp.net网页啊?
- webbrowser不能加载FLASH网页,求帮忙,谢谢了
- 是否每绑定一次DataSet到DataGrid,就需要再增加一次DataGrid里的TableStyle呢?
- 关于编写控件:如何使自制下拉控件,在下拉时,下拉框能超出其所在窗体的范围,就像combobox一样?(内祥)
- .net FtpWebRequest 基础连接已经关闭: 服务器提交了协议冲突。
- Process.GetProcessesByName 远程计算机不存在
<configuration>
...
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>参考http://forums.msdn.microsoft.com/en-US/netfxnetcom/thread/ff098248-551c-4da9-8ba5-358a9f8ccc57/
using System.Net.Security;
//安全验证回调函数
private static bool RemoteCertificateCallback(Object sender, X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
MessageBox.Show(sslPolicyErrors.ToString());
return false;
}
//添加回调函数
ServicePointManager.ServerCertificateValidationCallback = RemoteCertificateCallback;我觉得webservice里使用了System.Net.Security;命名空间应该对你这个程序有效
朋友你用抓包工具看过吗,ssl还有作用吗?
request.Proxy = null;
request.KeepAlive = false;
request.UsePassive = true ;
request.EnableSsl = true;我也用了啊,还是不行。我都不知道是怎么回事了。加入我不用ssl是肯定能传的。
我也把服务器上发的证书在客户端安装了的。哎,怎么回事哦。?哪位大哥能帮我呢。
-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQDvxrV1gwIUJKniirvycr2+BHonFgRmrzcRd72xpmSGZ5qrhpC1
gGq4ZbfCbypNnjY4aWR2DQiW1B4sYdwvnGatWgaRGx4DuuPu+n26j5XW7QijF3Dg
QY+JYB4WpIDN2Z9tmNRf2kHy+mF6BD1axiJRVaxyiFVS5FtJQ+K7EtzgCQIDAQAB
AoGAf/BeOIKb5FWf1EJEgNxag/5tk1d7J7NMReTHcfgf4Vt8uxNFOaN4zkVwJK4e
O2Y09iq+MQNJVvl91B6vVzQz0Dk2i2+l1cLvVL9b1wsEkfN/GrQCocUGbbmpIXCu
cd/FivGUhBBIow7Fv5JvyMJCO67BpRcgSDqLSveAhAmKeIECQQD5ocqzUA+Gwzef
d2wwkOx1BWQDEkCn101/m2Xi8ZSMn0wwNx1q+K6bX7rmpEkqkpi9vpZu23E2pjYF
n3NTEyvZAkEA9eSN5wIapYw9G7mWvs6WtD2A7daEbaPNryIKeTdqGXWQp3eRRgdN
77XofcLNlS9hUplbdAvCi2m7vzMzLWmnsQJBAPDbI1mpmKF9P/DT6AZf/lXWUq4H
8Ww/9111EXRLhPm9RWSL+Q1aThZJ4mpg/ttdwJPrDPh/MJf6/MqmEz6Hk9kCQAsM
rze/R3VC/Qf+6gA/BlSpIt8NMbw/jSGelPvnepQUTWDJJbUQ5PatpPnpxBU9INF2
ZL6tPJvJL4+i/FzBD7ECQQC6X4ze1SZp6/eCYzCwV/mICo3k2hkeBH2m0rnLqG2q
EFyCD8ek/Vq647T8HmYLEBiSwgMgABvaBW947E75KsrI
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIICKjCCAZOgAwIBAgIBADANBgkqhkiG9w0BAQUFADBbMQowCAYDVQQDEwExMQsw
CQYDVQQGEwI4NjEKMAgGA1UECBMBMTEKMAgGA1UEBxMBMTEKMAgGA1UEChMBMTEK
MAgGA1UECxMBMTEQMA4GCSqGSIb3DQEJARYBMTAeFw0wODA2MjMwOTMyMjJaFw0w
OTA2MjMwOTMyMjJaMFsxCjAIBgNVBAMTATExCzAJBgNVBAYTAjg2MQowCAYDVQQI
EwExMQowCAYDVQQHEwExMQowCAYDVQQKEwExMQowCAYDVQQLEwExMRAwDgYJKoZI
hvcNAQkBFgExMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDvxrV1gwIUJKni
irvycr2+BHonFgRmrzcRd72xpmSGZ5qrhpC1gGq4ZbfCbypNnjY4aWR2DQiW1B4s
YdwvnGatWgaRGx4DuuPu+n26j5XW7QijF3DgQY+JYB4WpIDN2Z9tmNRf2kHy+mF6
BD1axiJRVaxyiFVS5FtJQ+K7EtzgCQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABlz
XaudNj3cqrsItG6EW/XKNRa+vvr8ADAGnJjDFHlgiHQT138Y/qi3d6Pr6+ZTs0FT
bGwAqCznG2fIsphFwOa+oWDhWK1X1p35LRns6xYyvP6afHV/RJidk+dDW8ecC/lg
66xVC99Vs/ZtHN2nv63quYavlYfJdh10zq9adw6d
-----END CERTIFICATE-----我就把带红色的那部分PRIVATE KEY删除了然后再客户端装了。就这样的。好像我没看到服务器那里能生成根证书。
private static bool RemoteCertificateCallback(Object sender, X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
MessageBox.Show(sslPolicyErrors.ToString());
return false;
}
这个是了吗,看看到底是什么证书错误
private static bool RemoteCertificateCallback(Object sender, X509Certificate certificate,
X509Chain chain,
SslPolicyErrors sslPolicyErrors)
{
if (sslPolicyErrors == SslPolicyErrors.None)
return true;
MessageBox.Show(sslPolicyErrors.ToString());
return false;
}
这个试了吗,看看到底是什么证书错误。
还有你可以看下ie-》internet选项-》内容-》证书-》收信任的更证书颁发机构里面是不是多了一个你自己服务器的根证书
1:在没有ssl的情况下,抓包工具能看到传的命令比如用户名,密码什么的。(客户端用的自己的代码)
2:在有ssl的情况下,客户端用FileZilla客户端,是能正常上传的,并且在抓包工具里能看到目标地址。
2:在有ssl的情况下,客户端用自己写的代码,是不能正常上传的,并且在抓包工具里能看不到任何目标地址。也就是说可能用自己的代码做ssl的时候,根本就没有向服务器端发过一个包啊。
为什么哟?,我的客户端用的是msn上的例子。有ssl和没ssl的区别主要就是request.EnableSsl = true?哪位大哥能帮我呢。
listRequest.Proxy = null;