WEB开发网
开发学院手机开发Windows Mobile 开发 为什么.Net CF在调用HTTPS 的Web服务时失败 阅读

为什么.Net CF在调用HTTPS 的Web服务时失败

 2010-08-30 00:15:00 来源:WEB开发网   
核心提示:今天,随便翻阅了一下.net framework compact小组的Blog,为什么.Net CF在调用HTTPS 的Web服务时失败,发现一篇非常有用的博文,作者是:Andarno,下面是一个在HTTPS服务端加密的过程图示:首先,服务端会初始化一个将通过网络要发送到客户端的、未加密的数据包,原文地址是:http:

今天,随便翻阅了一下.net framework compact小组的Blog,发现一篇非常有用的博文,作者是:Andarno,

原文地址是:

http://blogs.msdn.com/andrewarnottms/archive/2007/11/19/why-net-compact-framework-fails-to-call-some-https-web-servers.aspx

下面,小弟就按照自己的理解和词典的解释,把文章翻译过来,和大家一起分享一下关于这个问题的产生原因和解决经验(来自Andarno)吧。

正文:

在.Net CF 2.0(SP2或更早版本)和3.5版本中发现了一个Bug,它主要造成了程序使用HttpWebRequest方法进行HTTPS服务请求失败时,返回的一个提示:(对于Web服务)

System.Net.WebException: Unable to read data from the transport connection. ---> System.Net.Sockets.SocketException: Unknown error (0x0).

at System.Net.HttpWebRequest.fillBuffer(HttpWebRequest request, Connection connection, CoreResponseData data)

at System.Net.HttpWebRequest.getLine(HttpWebRequest request, Connection connection, CoreResponseData data)

at System.Net.HttpWebRequest.parseResponse(HttpWebRequest request, Connection connection, Boolean defaultKeepAlive)

at System.Net.HttpWebRequest.startReceiving(Connection connection)

at System.Net.Connection.startReceiving(Object ignored)

at System.Threading.ThreadPool.WorkItem.doWork(Object o)

at System.Threading.Timer.ring()

at System.Net.HttpWebRequest.finishGetResponse()

at System.Net.HttpWebRequest.GetResponse()

// ...

at Program.Main(String[] args)

虽然异常提示的内容以及产生原因是相同的,但是从你的程序中进行标准HttpWebRequest调用时,Stack trace信息将是不同的。

然而,产生这个异常的原因有很多,其中一个原因就是服务端发送了一个空的加密数据包给.NetCF客户端。下面是一个在HTTPS服务端加密的过程图示:

首先,服务端会初始化一个将通过网络要发送到客户端的、未加密的数据包,并存放到Memory Buffer中。

1 2 3  下一页

Tags:为什么 Net CF

编辑录入:coldstar [复制链接] [打 印]
赞助商链接