Web响应始终返回错误500

时间:2017-09-25 08:05:36

标签: c# .net web-services asp.net-web-api asmx

我正在尝试使用.net框架来测试Web服务。 我总是从服务器获得错误500.

这是我的代码 首先是服务器端代码

public class BalanceInquiry : System.Web.Services.WebService
{
    [WebMethod]
    public string getAccount(string accNbr)
    {
        return accNbr;
    }
}

这是我的客户端代码:

 class Program
{
    static void Main(string[] args)  
    {  
        //creating object of program class to access methods  
        Program obj = new Program();  
        Console.WriteLine("Please Enter Input values..");  
        //Reading input values from console  
        string a =(Console.ReadLine());  
       // int b = Convert.ToInt32(Console.ReadLine());  
        //Calling InvokeService method  
        obj.InvokeService(a); 

    }  
    public void InvokeService(string a )  
    {  
        //Calling CreateSOAPWebRequest method  
        HttpWebRequest request = CreateSOAPWebRequest();  

        XmlDocument SOAPReqBody = new XmlDocument();  
        //SOAP Body Request  
        SOAPReqBody.LoadXml(@"<?xml version=""1.0"" encoding=""utf-8""?>  
        <soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">
         <soap:Body>  
            <getAccount xmlns=""http://tempuri.org/"">  
              <accNbr>" + a + @"</accNbr>  
            </getAccount>  
          </soap:Body>  
        </soap:Envelope>");  


        using (Stream stream = request.GetRequestStream())  
        {
            using (StreamWriter stmw = new StreamWriter(stream))
            {
                stmw.Write(SOAPReqBody);
            }
        }

        try
        {
            //Geting response from request  
            WebResponse response = request.GetResponse();
        }

        catch (WebException e)
        {
            Console.WriteLine(e.ToString());

        }
        Console.Read();

    }  

    public HttpWebRequest CreateSOAPWebRequest()  
    {  
        //Making Web Request  
        HttpWebRequest Req = (HttpWebRequest)WebRequest.Create("http://localhost:62325/BalanceInquiry.asmx");  
        //SOAPAction  
        Req.Headers.Add("SOAPAction:http://tempuri.org/");  
        //Content_type  
        Req.ContentType = "text/xml;charset=\"utf-8\"";  
        Req.Accept = "text/xml";  
        //HTTP method  
        Req.Method = "POST";  
        //return HttpWebRequest  
        return Req;  
    }  
}  

this is the output

错误是

  

System.Net.WebException:远程服务器返回错误:(500)内部服务器错误。      在System.Net.HttpWebRequest.GetResponse()      at consumeWebSer.Program.InvokeService(String a)在C:\ Users \ msaliba \ Documents \ Visual Studio 2010 \ Projects \ consumeWebSer \ consumeWebSer \ Program.cs:第53行

有没有人知道什么会导致这个错误。它是我的代码中的东西还是其他东西?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望将SOAP与WebApi一起使用,这更适合REST实现;如果需要SOAP,通常你会想要使用WCF。

无论如何,您的客户端正在发送xml,但我没有看到您的服务解析它的部分以提取accNbr参数,也没有在上面提到的xml中看到accNbr。 / p>

另外,我不确定您的getAccount方法是否作为Post方法公开。