У меня есть решение Visual Studio с проектом Silverlight и веб-проект, в котором размещается приложение Silverlight.Веб-проект также содержит веб-сервис ASMX, который вызывается приложением Silverlight ap.
. Как описано ниже, некоторые вызовы веб-службы работают нормально, а другие вызывают выброс CommunicationException, заключая в себе WebException -оба с сообщением «Сервер вернул следующую ошибку:« не найден »».
Во-первых, вот мой оригинальный метод, который не удался, как описано выше (имена сущностей изменены для простоты):
[WebMethod]
public Customer GetCustomer(int id)
{
CustomerDataContext dc = new CustomerDataContext();
return dc.Customers.SingleOrDefault(x => x.Id == id);
}
Во-вторых, для устранения проблемы я взял Linq to SQL и базу данных из картинки, и код ниже работал нормально:
[WebMethod]
public Customer GetCustomer(int id)
{
Customer c = new Customer() { ID=1, Name="Bob", History = new EntitySet<CustomerHistory>() };
return c;
}
В-третьих, подумав об этом, одно различие между двумя методамиявляется то, что первый будет включать значения в истории клиента.Я расширил второй метод, чтобы включить это, и он снова начал давать сбой:
[WebMethod]
public Customer GetCustomer(int id)
{
Customer c = new Customer() { ID=1, Name="Bob", History = new EntitySet<CustomerHistory>() };
c.History.Add(new CustomerHistory() { Id=1, CustomerId=1, Text="bla" });
return c;
}
Я застрял в отношении того, как развиваться - мое текущее мнение состоит в том, что это может быть проблемой десериализации на стороне Silverlight, когда граф объектов глубже.Это рационально не имеет смысла, но я не могу думать ни о чем другом.Я подтвердил, что размер передаваемого файла и размер буфера достаточно велики (по умолчанию 2 ГБ).
Любые указатели приветствуются.