Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 执行SOAP请求时出现内部服务器错误(500)_C#_Xml_Web Services_Soap_Httpwebrequest - Fatal编程技术网

C# 执行SOAP请求时出现内部服务器错误(500)

C# 执行SOAP请求时出现内部服务器错误(500),c#,xml,web-services,soap,httpwebrequest,C#,Xml,Web Services,Soap,Httpwebrequest,我正在尝试执行SOAP请求,但服务器返回500错误。 例如,SOAP请求通过jmeter正确返回XML消息,因此它一定是我的代码中的某个内容,但我看不出是什么。你能帮忙吗 private void soapRequest(string regID) { string soapReq= @"<?xml version=""1.0"" encoding=""utf-8""?>"; soapReq= "<soapenv

我正在尝试执行SOAP请求,但服务器返回500错误。 例如,SOAP请求通过jmeter正确返回XML消息,因此它一定是我的代码中的某个内容,但我看不出是什么。你能帮忙吗

private void soapRequest(string regID)
        {

            string soapReq= @"<?xml version=""1.0"" encoding=""utf-8""?>";
            soapReq= "<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:mpc=\"urn://mobility-platform.de/mpcustomerdb/\">\n";
            soapReq += "<soapenv:Header/>\n";
            soapReq += "<soapenv:Body>\n";
            soapReq += "<mpc:findRegistrationByID>\n";
            soapReq += "<registrationID>" + regID + "</registrationID>\n";
            soapReq += "</mpc:findRegistrationByID>\n";
            soapReq += "</soapenv:Body>\n";
            soapReq += "</soapenv:Envelope>";

            //Builds the connection to the WebService.
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://url?wsdl");
            req.Credentials = new NetworkCredential("user", "pass");            
            req.Headers.Add("SOAP:Action");
            req.ContentType = "text/xml;charset=\"utf-8\"";
            req.Accept = "text/xml";
            req.Method = "POST";

            //Passes the SoapRequest String to the WebService
            using (Stream stm = req.GetRequestStream())
            {
                using (StreamWriter stmw = new StreamWriter(stm))
                {
                    stmw.Write(soapReq.ToString());                    
                }
            }
            try
            {
                //Gets the response
                HttpWebResponse soapResponse = (HttpWebResponse)req.GetResponse();
                //Writes the Response
                Stream responseStream = soapResponse.GetResponseStream();
                //read the stream
                XmlDocument soapResponseXML = new XmlDocument();

                StreamReader responseStreamRead = new StreamReader(responseStream);
                soapResponse.ContentType = "text/xml";
                //MessageBox.Show(responseStreamRead.ReadToEnd().ToString());
                string soapURL = responseStreamRead.ReadToEnd().ToString();

                soapResponseXML.LoadXml(soapURL);
            }
            catch (Exception ex)
            {                
                MessageBox.Show("Error: " + ex.Message);
            }
        }
private void soapRequest(字符串regID)
{
字符串soapReq=@”;
soapReq=“\n”;
soapReq+=“\n”;
soapReq+=“\n”;
soapReq+=“\n”;
soapReq+=“”+regID+“\n”;
soapReq+=“\n”;
soapReq+=“\n”;
soapReq+=“”;
//建立与Web服务的连接。
HttpWebRequest req=(HttpWebRequest)WebRequest.Create(“http://url?wsdl");
请求凭证=新网络凭证(“用户”、“通过”);
请求头添加(“SOAP:Action”);
req.ContentType=“text/xml;字符集=\”utf-8\”;
req.Accept=“text/xml”;
请求方法=“POST”;
//将SoapRequest字符串传递给WebService
使用(Stream stm=req.GetRequestStream())
{
使用(StreamWriter stmw=新StreamWriter(stm))
{
stmw.Write(soapReq.ToString());
}
}
尝试
{
//获取响应
HttpWebResponse soapResponse=(HttpWebResponse)req.GetResponse();
//写入响应
Stream responseStream=soapResponse.GetResponseStream();
//阅读溪流
XmlDocument soapResponseXML=新的XmlDocument();
StreamReader responseStreamRead=新的StreamReader(responseStream);
soapResponse.ContentType=“text/xml”;
//Show(responseStreamRead.ReadToEnd().ToString());
字符串soapURL=responseStreamRead.ReadToEnd().ToString();
soapResponseXML.LoadXml(soapURL);
}
捕获(例外情况除外)
{                
MessageBox.Show(“错误:+ex.Message”);
}
}
这是soap请求

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mpc="urn://mobility-platform.de/mpcustomerdb/">
   <soapenv:Header/>
   <soapenv:Body>
      <mpc:findRegistrationByID>
         <registrationID>2304580</registrationID>
      </mpc:findRegistrationByID>
   </soapenv:Body>
</soapenv:Envelope>

2304580
以后编辑: 如果我改变
req.Headers.Add(“SOAP:Action”)至:

req.Headers.Add(“SOAPAction”和“\”http://url\“+”findRegistrationByID“;
我得到一个不同的错误:
“此属性不是由此类实现的”

使用此方法进行适当的soap请求不是很容易。我强烈建议使用整个web服务,而不是像这样进行请求:

WebService aa = new WebService;
registrationName = aa.findRegistrationByID("123");

这将完成上述所有代码;)

a)从不从字符串生成XML。b)您的
req.Accept=“text/XML";可能是错误的。服务器返回成功响应的内容类型是什么?这是您应该设置为的
Accept
。您有权访问相关服务器吗?如果是这样,事件查看器中的应用程序日志应该有一些有用的信息,它应该是这样的:
req.Headers.Add(“SOAPAction”,”“\”http://url\“+”findRegistrationByID“;
但是如果我像这样更改它,我会得到以下错误:这个类没有实现这个属性