我需要从服务提供商处获取一些数据,并配置我们的.net应用程序以指向其托管的Web服务以获取数据。使用下面的代码,当调用Web方法(ws.DoTransfer
)我得到以下错误...如何更改Web方法调用的http版本以停止505错误?
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);
}
}
错误:
The request failed with HTTP status 505: HTTP Version Not Supported.
我已经告诉的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.
后有红色下划线,并有错误...
'Object' does not contain a definition for 'GetWebRequest'
谁能告诉我怎么改HTTP版本为1.0,但仍使用类似的代码(而不是建立自己的soap包)来调用我的web方法?
我似乎无法找到任何类型的代码,我可以简单地注入我的代码看起来像下面的行...
ws.HttpVersion = HttpVersion.Version10;
感谢
我与Cisco AXL webservice具有相同的确切问题。我已经使用wsdl.exe来编译teh * wsdl和* xsd文件。我按照上面的步骤,但我不能指向它的wsdl文件??!它表示访问路径被拒绝,我试图运行visaul工作室作为管理员仍然没有运气 – laitha0 2013-07-10 20:11:32