它应该是可能的(它看起来像是),但假设我的ASMX Web服务中有以下功能:
[WebMethod(MessageName = "CreateExternalRpt1")]
public bool CreateExternalRpt(int iProductId, int iOrderProductId, DateTime dtReportTime, string strReportTitle,
string strReportCategory, string strReportPrintType, out string strSnapshot, string strApplicantFirst, string strApplicantLast,
string strApplicantMiddle, string strOwnerLast, string strOwnerMiddle, string strOwnerFirst,
bool blnCurrentReport, int iOrderId, bool blnFlag, string strCustomerId, string strUserId)
{
…
}
[WebMethod(MessageName = "CreateExternalRpt2")]
public bool CreateExternalRpt(int iProductId, int iOrderProductId, DateTime dtReportTime, string strReportTitle,
string strReportCategory, string strReportPrintType, string strReportSnapshot, string strApplicantFirst, string strApplicantLast,
string strApplicantMiddle, string strOwnerLast, string strOwnerMiddle, string strOwnerFirst,
bool blnCurrentReport, int iOrderId, bool blnFlag)
{
…
}
在我的Web服务中定义了这两个函数,我的.NET客户端应用程序无法下载元数据,而是抛出一般错误消息“下载时出错......”。
删除上述方法之一后,.NET客户端应用程序可以成功下载元数据。
我已经读过,通过使用唯一名称来装饰WebMethod,这两个函数都应该在服务元数据中公开。
这不起作用。我错过了什么?
答案 0 :(得分:-1)
:) - 我敢肯定,一旦你想到这一两分钟,你就会意识到。
请记住,当您使用SOAP进行传统呼叫时,您知道呼叫时的方法,但不知道整个签名。您可能希望它包含参数A,B和C,但您不是100%确定。
另一张海报提到...... Can web methods be overloaded?
通过使用基于消息的路由器,有多种方法可以在ASMX中重载方法。但是,我从来没有走过那条路,并且听过很多人这样做的问题。我建议WCF用于过载。 http://jeffbarnes.net/blog/post/2006/09/21/overloading-methods-in-wcf.aspx