我正在尝试制作一个测试 Web 服务并抛出一个 SoapException。但是当我通过浏览器打开服务时,它显示内部服务器错误 - 500。
如果我尝试通过发送手动创建的 SoapRequest(在 stringbuilder 中)来手动使用它,我会在 Visual Studio 本身的“”行中收到相同的错误“Servererror - 500 WebResponse response = req.GetResponse()
”
无论如何,我实际上可以看到“响应 XML 中的错误”。
我正在尝试制作一个测试 Web 服务并抛出一个 SoapException。但是当我通过浏览器打开服务时,它显示内部服务器错误 - 500。
如果我尝试通过发送手动创建的 SoapRequest(在 stringbuilder 中)来手动使用它,我会在 Visual Studio 本身的“”行中收到相同的错误“Servererror - 500 WebResponse response = req.GetResponse()
”
无论如何,我实际上可以看到“响应 XML 中的错误”。
听起来服务有问题,您需要在服务器端而不是客户端对其进行调试。我得出这个结论是因为您的客户端代码和网络浏览器有问题。
假设您使用的是 .NET,您是否在服务器上启用了 ASP.NET 错误的显示?有关信息,请参阅本文。
更新:
所以你在服务器上抛出一个错误,并想在客户端获取错误文本?服务器上的错误应该会导致 500 错误消息,并且不太可能向客户端返回任何 XML。也许您可以将一些东西传递给 SoapException 构造函数?
你看过SoapException 的文档吗?他们有一些使用 SoapException 的 Detail 属性传递信息的示例。
您可以在浏览器中访问 asmx(假设您使用的是 asmx)来查看它是否正常工作?
浏览了 5-6 个小时后终于找到了……这里是:
当您手动获取响应时,请使用以下命令:
try
{
WebResponse response = req.GetResponse();
Stream str = response.GetResponseStream();
StreamReader rdr = new StreamReader(str);
Response.Write(rdr.ReadToEnd());
Response.End();
}
catch (WebException webEx)
{
Stream str = webEx.Response.GetResponseStream();
StreamReader rdr = new StreamReader(str);
Response.Write(rdr.ReadToEnd());
Response.End();
}