C# 在webservice中重载方法时出错

C# 在webservice中重载方法时出错,c#,web-services,web-config,asmx,C#,Web Services,Web Config,Asmx,我已经看到并通过了,但最终以一个错误作为结束 在该服务中,我将web方法作为 [WebMethod(MessageName = "AddWithMoreParam",Description="More parameters", EnableSession=true)] public bool UpdateMovies(string userName, string role, string movieName, string releaseDate) { BlogCon

我已经看到并通过了,但最终以一个错误作为结束

在该服务中,我将web方法作为

[WebMethod(MessageName = "AddWithMoreParam",Description="More parameters", EnableSession=true)]
public bool UpdateMovies(string userName, string role, string movieName, string releaseDate)
{        
    BlogController con = new BlogController();
    BlogInfo info=new BlogInfo();
    info.MovieName=movieName;
    info.ReleaseDate=releaseDate;
    return con.UpdateMovies(info);        
}


[WebMethod(MessageName = "AddWithLessParam", Description = "Less parameters", EnableSession = true)]
public bool UpdateMovies(string movieName, string releaseDate)
{
    BlogController con = new BlogController();
    BlogInfo info = new BlogInfo();
    info.MovieName = movieName;
    info.ReleaseDate = releaseDate;
    return con.UpdateMovies(info);
}

问题可能与webservicebinding有关,但我对此感到困惑,无法继续。

您不能真的使web服务操作过载。用于描述soapweb服务的语言(WSDL和XSD)没有重载的概念

通过设置
WebMethod
属性的
MessageName
属性,您有时可以使用一个hack。然而,正如您的错误消息明确指出的那样,这破坏了WS-IBP1的遵从性。WS-IBP1禁止使用这种“重载”,因为并非所有web服务堆栈都支持它

解决方案是放弃,并为每个方法使用不同的名称


仅供参考,SOAP也没有其他编程语言构造的概念,如默认参数、索引器、泛型、枚举等。它不是面向对象的,所以不要拘泥于使用面向对象的概念或您最喜欢的编程语言中的概念。当然,这些可以用于服务的实现,但不能用于服务的定义。

您需要使用新名称创建方法。您可以在webservices中编写和编译重载方法,但当生成WSDL时,它将无法工作。有一种替代方法可以实现这一点,如图所示。您需要从Web服务中删除
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1\u 1)]
。您会遇到什么错误?在浏览器中,它表明了上图所示的错误。ASMX是一种传统技术,不应用于新的开发。WCF应用于web服务客户端和服务器的所有新开发。一个提示:微软已经退出了MSDN。主席先生,我和我的同事们将在未来几天内找到一种更好的方式使用WCF服务。但这一次我必须使用Web服务。有其他方法可以这样做吗?我现在对.asmx有了更好的理解。最简单的方法就是不做重载。此外,仅供参考,WCF于七年前首次发布。你不只是有点落后于时代。你远远落后于时代,你所使用的代码如果发现bug将永远无法修复。这并不令人印象深刻。很抱歉,我已经访问过这个网站,但它对我没有任何帮助。这是使用方法重载的结果。但我还没有得到确认,因为它符合WS-I基本概要v1.1。