c# - .NET Web 服务接收 HTTP POST 请求 (500) 内部服务器错误

标签 c# asp.net web-services http-post

我目前正在编写一个 C# 网络服务,它有几种方法,其中一种必须接收 HTTP POST 请求。我所做的第一件事是更改 Web 服务项目中的 web.config 文件,如下所示。

<webServices>
  <protocols>
    <add name="HttpSoap"/>
    <add name="HttpPost"/>
    <add name="HttpPostLocalhost"/>
    <add name="Documentation"/>
  </protocols>
</webServices>

我可以在本地运行 Web 服务,当我在浏览器中单击该方法时,我可以看到它处理 HTTP POST 请求并接受 args=string,因为我的 Web 方法签名接受一个名为 args 的字符串参数。然后,我使用下面的代码通过测试 ASP.NET 应用程序对此进行测试,以触发 HTTP POST 请求。

HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ConfigurationManager.AppSettings["PaymentHubURL"].ToString());

request.KeepAlive = false;
request.ContentType = "application/x-www-form-urlencoded";
request.Method = "POST";

StringBuilder sb = new StringBuilder();
sb.Append("message_type=");
sb.Append(HttpUtility.UrlEncode("Txn_Response"));

byte[] bytes = UTF8Encoding.UTF8.GetBytes(sb.ToString());
request.ContentLength = bytes.Length;
using (Stream postStream = request.GetRequestStream())
{
    postStream.Write(bytes, 0, bytes.Length);
}

string test;
using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
{
     StreamReader reader = new StreamReader(response.GetResponseStream());

     test = reader.ReadToEnd();
}

但是当我运行它时,我得到“远程服务器返回错误:(500) 内部服务器错误”。如果我删除参数,通过删除 stringbuilder 和字节代码,以及在 Web 服务中没有参数,它就可以工作。所以很明显是参数的问题。我实际上想发送更多数据,并且在 Web 服务中使用了 string[] 参数,但这也失败了。

有人能帮忙吗??

最佳答案

我建议您重新考虑您的方法。 Microsoft 已经为使用 Web 服务编写了非常棒的库,但是有两种方法可以做到这一点——“添加 Web 引用”和“添加服务引用”。

在你的情况下,你似乎有一个“asmx 网络服务”,所以我建议你在 visual studio 中为你的项目添加一个“网络引用”。这是假设您使用的是 visual studio。

添加此 Web 引用后,您可以通过“新建”-ing 创建您的客户端。您可以在此客户端上执行任何 Web 方法。这是使用 Web 服务的最简单方法。您不必处理任何 http 并发症。

希望这对您有所帮助。

关于c# - .NET Web 服务接收 HTTP POST 请求 (500) 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4185566/

相关文章:

C# 钳形 for 循环

c# - 在 Controller 中实现 System.Web.Caching.Cache 对象来缓存特定查询

java - 使用 spring-boot 和 Weblogic 公开 SOAP Webservice

java - 开发 Java Web 服务的最佳 IDE(适合初学者)

c# - 通过 JQuery 使用 WCF POST 的 400 错误请求 HTTP 响应

c# - 在 EF WCF 服务中使用上下文和存储库

c# - 在 ASP.NET 中使用 Task.Delay 是否安全?

c# - .NET 中是否有一种功能,方法可以通过该功能确定哪个类调用了它

c# - 以编程方式添加按钮列

c# - 在 ASP.NET 中对 Ajax jQuery 调用中的 bool 值进行操作