У меня есть приложение, которое будет использовать WCF для обслуживания различных кусков данных для клиентов. Однако из-за размера некоторых наборов данных, которые будут возвращены (и это потому, что клиентское приложение должно отображать большое количество объектов в списке, а не потому, что я просто ленился в дизайне) m для ограничения размера сообщения.Служба данных WCF - как диагностировать ошибку запроса?
Я ожидал этого и планировал реализовать потоковое воспроизведение/реакцию данных (я считаю, что Пабло Чибраро написал статью об этом один раз). Тем не менее, я видел несколько демонстраций, которые делают службы данных WCF очень классными. Мне просто не удалось заставить его работать для меня.
У меня нет задней базы данных, и я не хостинг внутри IIS. Я смог получить некоторые примеры, работающие над базовыми объектами, но как только я подключу его к объектам из моего приложения, он просто не работает - я получаю ошибку запроса, которая, кажется, предназначена для бесполезности - он просто предлагает проверить журналы сервера, не указывая, как я могу это сделать. Я подозреваю, что предполагается, что я хостинг с IIS, и IIS может регистрировать сообщения для служб данных, которые он размещает.
Один достаточно простой класс Я пытаюсь работать с для сообщения журнала (я хочу диагностики клиента приборной панели стиле, чтобы иметь возможность удаленно показать мне логи сервера, скажем, за последние 24 часа):
public class Message
{
public string Source { get; set; }
public MessageType Type { get; set; }
public DateTime Timestamp { get; set; }
public string MessageText { get; set; }
public override string ToString()
{
return string.Format("[{0}] [{1}] [{2}] {3}", Timestamp.ToString(), Source, Type, MessageText);
}
}
Использование этого класса генерирует ошибку, а если я укажу его на класс, который я макет как тест (как в демонстрации Pablo здесь: http://msdn.microsoft.com/en-us/data/cc745968.aspx), тогда он отлично работает. Любые идеи о том, почему это так, или как я могу получить что-то полезное из-за ошибки?
Ниже мое определение сервиса и класс, я использую, чтобы выставить IQueryable <> реализация коллекций, которые я хочу, чтобы вернуться (в тот момент, я только сделал Записывать, что тип List<Message>
)
public class DataServiceFacade
{
public IQueryable<Message> Log
{
get
{
return Program.Log.AsQueryable();
}
}
}
public class DataServiceHost : DataService<DataServiceFacade>
{
public static void InitializeService(IDataServiceConfiguration config)
{
config.UseVerboseErrors = true;
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
}
}
Теперь это может быть что-то простое, но я уже провел слишком много времени, ударяя головой о эту конкретную кирпичную стену. Я надеялся, что Data Services будет обрабатывать такие вещи, как пейджинг для меня, и дать мне хороший гибкий формат, который будет работать на разных платформах.
Кроме того, если для этого не будет возможности использовать службы данных, я буду благодарен за любые указатели на пейджинг данных или поточную передачу коллекции.
Благодаря
Хммм ... Я думал, что пробовал это, но, наверное, я сделал это неправильно. В любом случае, добраться туда ... Теперь я получаю разумные ошибки. В настоящее время я работаю над тем, что мой класс сообщений имеет перечисление (Тип - ошибка, предупреждение и т. Д.). В моем коде довольно много перечислений - я буду немного раздражен, если я не смогу использовать ни один из них :) Я предполагаю, что я буду использовать IgnoreProperties и добавить другие свойства, чтобы обернуть их как типы, более дружественные к службам данных. Спасибо! – JohnL
В случае, если кто-то задается вопросом об перечисляемой вещи, очевидно, вы можете использовать их с некоторыми дополнительными вводами: http://msdn.microsoft.com/en-us/library/aa347875.aspx – JohnL