【问题标题】:500 error from a RESTful web service which doesn't even act on the http request来自 RESTful Web 服务的 500 错误,它甚至不作用于 http 请求
【发布时间】:2010-11-20 18:09:54
【问题描述】:

我有一组在 IIS7 上运行的 ASP.Net 页面。作为 RESTful,我们希望收到一些 XML。这不会是一项公共服务,所以 XML 格式是一致的。我们需要此服务作为两个站点之间的集成,并且该服务将数据推送到一个方向。

我使用 Firefox 的 Poster 插件测试了它的工作原理,一切正常。但是,预期的调用者将是另一个网站(每隔几个小时或根据用户操作进行一次服务器端调用),我得到了预期的响应。

但是,当我们尝试从其他站点(它需要工作的地方)调用它时,它会引发 500 错误。

我不确定代码的哪一部分造成了问题,所以我们注释掉了整个 Page_Load() 并且仍然是一样的!

我通过其他一些代码尝试使用 cURL,但只有来自服务器的调用抛出 500。IIS 日志确认正在调用正确的 URL。我什至尝试使用相同的用户代理进行呼叫,但我的网络服务不喜欢单独使用该服务器。

我真的在这个问题上摸不着头脑 - 根本没有代码怎么能抛出 500?可能是因为某些 HTTP 标头还是服务器正在发送 SOAPAction 标头?

(我现在无法确认,因为我不在办公室 ATM)

【问题讨论】:

  • 您是否查看过网络服务器上的 Windows 事件查看器(应用程序日志),以查看是否记录了来自 ASP.NET 的未处理异常的事件?

标签: asp.net web-services rest


【解决方案1】:

在我看来,ASPNET 中最常见的两个 500 响应代码来源是:

  • Web.config 已损坏或损坏
  • global.asax 抛出异常

另请参阅this blog entry on troubleshooting 500 errors

【讨论】:

    【解决方案2】:

    好的,我直接发送 XML POST,服务器将其作为参数发送 - xmlObject= 并且 validateRequest 为真。

    感谢Carson63000的评论!

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题,原来是web方法参数中的一个简单错误。我的 Web 方法是 doSomething(int parameter),但我用 doSomething?parameter=1.0 调用它,即双精度。

      当 IIS/ASP 无法将参数转换为 Web 方法所期望的类型时,它似乎抛出了这个 HTTP 500 异常。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-23
        • 1970-01-01
        相关资源
        最近更新 更多