Ошибка загрузки метаданных из службы ASMX - PullRequest
0 голосов
/ 07 июня 2010

Это должно быть возможно (и похоже, что так и есть), но предположим, что в моем веб-сервисе ASMX есть следующие функции:

     [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)
    {
    …
  }

Поскольку обе эти функции определены в моем веб-сервисе, мое клиентское приложение .NET не может загрузить метаданные и вместо этого выдает общее сообщение об ошибке «Произошла ошибка при загрузке…».

При удалении одного из указанных выше методов клиентское приложение .NET может успешно загрузить метаданные.

Я читал, что, украсив WebMethod уникальным именем, обе функции должны быть представлены в метаданных службы.

Это не работает. Чего мне не хватает?

1 Ответ

0 голосов
/ 07 июня 2010

:) - Я уверен, что если подумать минуту или две, ты поймешь.

Имейте в виду, что когда вы делаете традиционный вызов с использованием SOAP, вы знаете метод во время вызова, но не знаете всю сигнатуру. Вы можете ожидать, что он содержит параметры A, B и C, но вы не уверены на 100%.

Как уже упоминалось в другом постере ... Можно ли перегружать веб-методы?

Существует несколько способов перегрузки методов в ASMX с помощью маршрутизаторов на основе сообщений. Тем не менее, я никогда не шел этим путем и слышал, что у многих возникали проблемы с этим. Я бы порекомендовал WCF для перегрузок. http://jeffbarnes.net/blog/post/2006/09/21/overloading-methods-in-wcf.aspx

...