2016-08-08 22 views
-1

我面临的问题,使从c#post post方法 我有500内部服务器错误。发布方法时的服务器错误500

这是我的代码,这是调用需要时间,它包括XML文档。

我用ARC插件做了同样的调用,它工作正常。但在这里.net我面临的问题

string Url = "http://10.107.2.153/onvif/device_service"; 
//System.Net.WebRequest req = System.Net.WebRequest.Create(Url);// + (string.IsNullOrEmpty(Data) ? "" : "?" + Data)); 
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(Url); 
//req.Credentials = new NetworkCredential("admin","Cisco123"); 
req.Method = "POST"; 
req.ContentType = "text/xml;charset=UTF-8";//action=\"http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime\""; 
req.Headers.Add("SOAPAction","\"http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime"); 
string postData = "<s:Envelope xmlns:s=\"http://www.w3.org/2003/05/soap-envelope\"><s:Body xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><GetSystemDateAndTime xmlns=\"http://www.onvif.org/ver10/device/wsdl\"/></s:Body></s:Envelope>"; 
byte[] byteArray = System.Text.Encoding.ASCII.GetBytes(postData);//Encoding.UTF8.GetBytes(postData); 
req.ContentLength = byteArray.Length; 
Stream dataStream = req.GetRequestStream(); 
dataStream.Write(byteArray, 0, byteArray.Length); 
dataStream.Close(); 
try 
{ 
    System.Net.HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
} 
catch (WebException wex) 
{ 
    WebResponse errResp = wex.Response; 
    using (Stream respStream = errResp.GetResponseStream()) 
    { 
     StreamReader reader = new StreamReader(respStream); 
     string text = reader.ReadToEnd(); 
    } 
} 
+0

什么问题?例外详情请。 – adaam

+0

错误:500内部错误 –

+0

感谢您的帮助。 我可以通过增加一个参数来解决这个问题 req.ProtocolVersion = HttpVersion.Version10; –

回答

0

通过添加protocolversion参数问题得到解决。

req.ProtocolVersion = HttpVersion.Version10 

这可能是由于协议不匹配而引起的问题。