【发布时间】:2014-03-28 14:07:43
【问题描述】:
我在 PHP 中开发了一个 WebService...当我从 PHP 应用程序调用它时它工作得很好,但是从 .NET 调用时我遇到了问题。
我调用 Web 方法时收到的错误是“永久移动”。
服务的 WSDL 位于:http://feriados.servicios.desytec.com/feriados?wsdl
.NET 代码如下:
private void button1_Click(object sender, EventArgs e)
{
Servicio.Desytec_Feriados svc = new Servicio.Desytec_Feriados();
var feriados = svc.GetHolidays("8cd4c502f69b5606a8bef291deaac1ba83bb9876", "cl", "2014", "5");
System.Diagnostics.Debug.WriteLine(feriados.Length);
}
【问题讨论】:
-
这可能意味着您的网络服务正在重定向 URL....如果您使用 System.Net.HttpWebRequest 或 System.Net.WebClient 看看是否有一种方法可以自动跟踪重定向....或检查状态是否永久移动(状态代码 301)...并检查响应标头以跟随 URL
-
没有重定向...正如我所说,从 PHP 网页调用 Web 服务时可以工作。如果使用 WSDL url,则 XML 文档会正确显示。
-
"当我调用 Web 方法时收到的错误是“永久移动”。显然,您得到的不是状态 200 OK。您认为 .NET 在状态上撒谎吗? 你可能会得到 301...PHP 可能会自动跟随重定向标头,但 dot net 不会。你能发布你的代码,实际上是使用 WebClient 或 HttpRequest 类吗?
-
如何找到该代码?当我添加 Web 服务引用时,它会添加一个 Reference.cs 文件,其中包含一个派生自 SoapHttpClientProtocol 的类。在其中,对 Invoke 的调用实际上调用了实际的方法。
-
有人知道解决办法吗?
标签: c# php .net web-services wsdl