我需要从服务提供商处获取一些数据,并将我们的 .net 应用程序配置为指向他们托管的 Web 服务以获取数据。使用下面的代码,当调用 web 方法时 ( ws.DoTransfer
) 我收到以下错误...
private void DoTransferLocal()
{
Version version = new Version();
string error = string.Empty;
try
{
RemoteService ws = new RemoteService();
ServicePoint spm = ServicePointManager.FindServicePoint(new Uri(ws.Url));
spm.Expect100Continue = true;
version = spm.ProtocolVersion;
ws.Credentials = credentials;
ws.PreAuthenticate = true;
RemoteResult result = ws.DoTransfer();
MessageBox.Show("Result = " + result.transferStatus);
}
catch (Exception ex)
{
error = ex.Message;
}
finally
{
MessageBox.Show(version.ToString() + Environment.NewLine + error);
}
}
错误:
请求失败,HTTP 状态为 505:不支持 HTTP 版本。
我被告知 HTTP 的版本需要是 1.0,但我的是 1.1
我已经阅读了一些关于此的谷歌帖子,并看到了覆盖GetWebRequest
此处显示的方法的建议...
protected override System.Net.WebRequest GetWebRequest(Uri uri)
{
System.Net.HttpWebRequest request = base.GetWebRequest(uri) as System.Net.HttpWebRequest;
request.ProtocolVersion = System.Net.HttpVersion.Version10;
return request;
}
...但是当我尝试这个时,GetWebRequest
后面base.
用红色下划线并且有错误...
“对象”不包含“GetWebRequest”的定义
谁能告诉我如何将 HTTP 版本更改为 1.0,但仍然使用类似的代码(而不是构建我自己的肥皂包)来调用我的 web 方法?
我似乎找不到任何可以简单地注入到我的代码中的代码,如下行...
ws.HttpVersion = HttpVersion.Version10;
谢谢