我正在通过Google Maps API创建用于地址编码地址的SQL CLR存储过程。我正在使用的SQL版本是2008,它只支持.NET 3.5及更低版本,因此我需要降级我的目标框架。
我正在生成一个Web请求,获取其响应,然后尝试使用以下代码获取其响应流:
var request = WebRequest.Create(requestUri);
var response = request.GetResponse();
var xdoc = XDocument.Load(response.GetResponseStream().ToString());
我在最后一行使用ToString()方法,因为XDocument.Load()方法不支持.NET 3.5中的流。
这是我得到以下异常的最后一行,我还没有解决:
无法找到文件'c:\ users \ xxx \ documents \ visual studio 2012 \ Projects \ GoogleGeoCoder \ ConsoleApplication1 \ bin \ Debug \ System.Net.ConnectStream'。
请记住,在针对.NET 4时,所有这些都很有效 - 唯一的调整是添加ToString()方法。
有关如何解决异常的任何想法?
答案 0 :(得分:1)
response.GetResponseStream()
返回Stream
。当您.ToString()
Stream
时,您将获得该类的名称,而不是该流的内容。
如果您想获取流的内容,首先需要阅读流。
var response = new StreamReader(request.GetResponse().GetResponseStream());
var xdoc = XDocument.Load(response.ReadToEnd().ToString());