Silverlight WebClient 和 HTTP 状态码

4
我正在使用HSS Interlink在我的应用程序中上传和下载文件。我遇到的问题是,我的下载处理程序返回HTTP状态代码,如500、404等。但问题是,当我检查请求时,它会正确地显示我真正想要返回的500状态代码,但在Silverlight客户端中,当我检查异常中的HttpWebResponse.Status时,却得到了404的结果。 我在MSDN上进一步调查发现了一个非常奇怪的备注:
“仅针对HTTP和HTTPS方案返回的状态代码值为OK和NotFound。”

http://msdn.microsoft.com/en-us/library/system.net.httpstatuscode%28v=vs.95%29.aspx

有人能为此提供一些线索吗?这是否意味着Silverlight WebClient只能在响应中具有OK和NotFound状态?

这个问题非常接近我的问题:http://stackoverflow.com/questions/10844904/server-side-exception-handling-in-silverlight - Shoaib Shaikh
1个回答

4

我找到了一个解决方案... Silverlight需要注册URL协议,以便可以处理传入的HTTP状态码。

bool httpResult = WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
bool httpsResult = WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);

我相信RegisterPrefix不只有一种用途。我希望其他人能帮助我了解它的潜在用途。
编辑:
Silverlight提供了两种与http堆栈交互的模式。其中一种是默认使用的browserStack。所有cookie和认证头都由浏览器处理,但它不会向Silverlight客户端返回任何状态码。
另一方面,ClientHttp stack可以让你获取状态码和其他异常细节,但需要你自己管理包括cookie、header等所有内容。
问候。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接