У нас есть такой веб-сервис:
[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public object[] DoSmt(object[] inParams)
{
List<object> rsl = new List<object>();
rsl.Add(DateTime.Now);
rsl.Add(new CallResult());
return rsl.ToArray();
}
CallResult
класс определен в веб-сервисе.Мы вызываем этот метод из WinForms (перед этим мы добавляем веб-ссылку на этот веб-сервис):
Service svc = new Service();
object[] arrRsl = svc.DoSmt(new object[] { "hi there", "hello" });
Получаем исключение:
Приложение не знает, как десериализоватьCallResult
Но если мы добавим в веб-службу такую забавную функцию, как эта:
[WebMethod(EnableSession = true)]
public void Fun(CallResult abc)
{
// Do nothing
}
, тогда все в порядке.Это потому, что CallResult
не появляется в файле WSDL перед добавлением забавной функции, потому что он не появляется ни в одном WebMethod
.
Вопрос: Как сообщить C # для генерации CallResult
в файле WSDL, даже если он явно не используется ни в одном WebMethod
.Мы используем VS2005.
Спасибо.