C# 远程服务器返回错误:(500)内部服务器错误Web服务

C# 远程服务器返回错误:(500)内部服务器错误Web服务,c#,oracle,web-services,C#,Oracle,Web Services,我正在尝试向oracle webservice发送SOAP XML。服务引用无法正常工作,因此我决定使用webrequest,但我收到了一个错误“远程服务器返回了一个错误:(500)内部服务器错误。” 从客户端代码诊断服务器中发生的问题可能非常困难。如果您有权访问服务器,则可以查看web服务器的错误日志 例如,使用Ubuntu上的Nginx,您可能希望导航到/var/log/Nginx目录,然后使用nano或tail-f查看文件error.log或类似名称的完整内容。这里将列出服务器抛出500的

我正在尝试向oracle webservice发送SOAP XML。服务引用无法正常工作,因此我决定使用webrequest,但我收到了一个错误“远程服务器返回了一个错误:(500)内部服务器错误。”


从客户端代码诊断服务器中发生的问题可能非常困难。如果您有权访问服务器,则可以查看web服务器的错误日志


例如,使用Ubuntu上的Nginx,您可能希望导航到
/var/log/Nginx
目录,然后使用
nano
tail-f
查看文件
error.log
或类似名称的完整内容。这里将列出服务器抛出500的确切原因。可能不是您的请求格式不正确,而是端点在服务器端配置错误。

这只是我的观点,但如果“服务引用不正常”,我不会选择尝试更脆弱的解决方案。使用服务引用,您至少有机会获得比http 500更具体的服务错误。@Filburt,因为使用服务引用发送所有值,即使我没有设置导致错误的值。客户以前也经历过这种情况,他们建议改用webrequest。这里是webrequest的参考,如果不在代理类或手工构建的XMLSOAP消息中设置值,会有什么不同?如果服务方法需要一个值,那么无论以何种方式生成请求,If都将失败。@Filburt这就是我实际告诉他们的。但是他们坚持使用soapxml,最终还是soapxml。使用web服务客户端只需您自己构建消息。唯一的问题是传递要调用的服务方法所需的参数。如果缺少必需的输入值,服务将始终拒绝任何调用(无论以何种方式生成)。我无权访问他们的服务器。顺便说一下,这是oracle web服务
   string envelope = System.IO.File.ReadAllText("test.xml");
    byte[] byteArray = Encoding.UTF8.GetBytes(envelope);

    byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes("xxxxx" + ":" + "xxxxx");
    string credentials = System.Convert.ToBase64String(toEncodeAsBytes);

    HttpWebRequest request =(HttpWebRequest)WebRequest.Create("https://ehpq-test.fa.em2.oraclecloud.com/fscmService/SupplierServiceV2");

    request.Method = "POST";
    request.ContentType = "text/xml;charset=UTF-8";
    request.ContentLength = byteArray.Length;

    request.Headers.Add("Authorization", "Basic " + credentials);

    request.Headers.Add("SOAPAction", "https://ehpq-test.fa.em2.oraclecloud.com/fscmService/SupplierServiceV2");

    Stream dataStream = request.GetRequestStream();
    dataStream.Write(byteArray, 0, byteArray.Length);
    dataStream.Close();

    using (WebResponse response = request.GetResponse())
    {
        using (Stream stream = response.GetResponseStream())
        {
            var doc = XDocument.Load(stream);
        }
    }