【问题标题】:Call to web service webmethod throws HTTP/1.1 404 Not Found调用 web 服务 webmethod 抛出 HTTP/1.1 404 Not Found
【发布时间】:2015-08-13 04:08:57
【问题描述】:

我有一段代码,其中有 2 次连续调用一个好的旧 ASMX Web 服务。

service.Url = "http://.....";
service.A(1, 2, 3);
service.B(4, 5, 6);

致电A 即可。但是调用B 会抛出404... not found... 在发现中,这两种方法都是可见的并且看起来很好——我在IE 中都看到了,元数据看起来不错。我在B 中放置了断点,它绝对没有命中。我确实重建了,Update Web Service 在消费项目中引用并重建了它。

状态为WebExceptionStatus.ProtocolError

失败的网络方法的签名

<WebMethod(Description:="Store a fragment of object on server.")> _
Public Function B(
    ByVal p1 As String, 
    ByVal p2 As String,
    ByVal p3() As Byte, 
    ByVal p4 As Integer,
    ByVal p5() As Byte) As Boolean

通话已(已验证)

bool result = service.B(string, string, byteArray1, int, byteArray2);

同样,未达到 WebMethod B。 Web 参考代理和所有 - 看起来不错。 会是什么?

【问题讨论】:

  • 您的服务可能有错误的 url 尝试设置服务的 url 以更正 url 像 service.Url = "http:///directory/service1.asmx";
  • @Adil 这正是我们所做的。 Ulr 在调用 AB 之前设置
  • 复制该 url 并浏览,如果没问题,然后重建您的服务,更新引用并重建消费应用程序
  • @Turbulence 您到底需要什么? - 很明显,相同的 url,相同的代码库,2 种方法,一种没有以编程方式响应(未找到),但是当您将此 URL 放入 IE 地址栏并且在那里看起来不错时,它就在那里
  • @Adil 完成了这一切。这就是我问这个问题的原因。可能是环保的。或者,可能有人知道一些事情,例如,如何巧妙地识别这个问题

标签: c# asp.net web-services


【解决方案1】:

我解决了。自从我得到HTTP/1.1 404 Not FoundWebExceptionStatus.ProtocolError 之后,这很令人困惑。

一旦我连接了Fiddler2,我正在挖掘它,发现WebView,其中清楚地写着:

•Web 服务器上配置了请求过滤,以拒绝请求,因为内容长度超过了配置的值。

为了解决这个问题,我在 IIS 中更改了配置以允许 50MB 请求。

您还希望在 web.config 中进行以下设置

<httpRuntime maxRequestLength="1000000" executionTimeout="3000"/>

最大设置为2097151 KB

404 令人困惑。这听起来像是 Web 服务的问题,而实际上它是请求的大小。而当我说它之前工作时,只是因为之前我不会像这次那样保存这么大的对象。

【讨论】:

  • 知道请求的大小导致 HTTP 404 错误非常可怕。简直是噩梦般的体验。我还在 web 方法参数中将文件作为字节数组上传,该参数超出了 IIS 中配置的大小。感谢您帮助我们。
  • @RBT 可能只是微软的一种方式来掩盖一些事情。如果您是真正的客户,您可能知道您只能上传特定大小的文件。但是,如果你是一些黑客并且只是在探索,你会得到 404 和“啊,不能这样做”。谁知道?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-30
  • 1970-01-01
  • 2016-04-10
  • 2017-04-24
  • 2013-11-16
  • 2012-09-05
  • 1970-01-01
相关资源
最近更新 更多