我需要從服務提供商處獲取一些數據,並配置我們的.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