WCF PerSesson InstanceContextMode предотвращает генерацию прокси с использованием SVCUtil - PullRequest
0 голосов
/ 04 августа 2011

У меня есть веб-служба WCF, размещенная в службе Windows. Я генерировал прокси с использованием SVCUTIL, и все работало нормально, но сегодня я изменил InstanceContextMode с InstanceContextMode.Single на InstanceContextMode.PerSession и теперь я получите ошибку ниже, которую я не могу выделить. Я могу надежно воссоздать ошибку, не меняя ничего, кроме этой настройки. Есть идеи ???

Вот сообщение об ошибке от SVCUTIL

Создание файлов метаданных ... EXEC: ошибка: произошла ошибка экспорт типа услуги: Host.Services.MyService.

An exception was thrown in a call to a WSDL export extension:

System.ServiceModel.Description.DataContractSerializerOperationBehavior контракт: http://MySoftware/ServiceContracts/2011/02:IMyService

Сервисный интерфейс выглядит следующим образом:

[ServiceContract(Namespace = Namespace.Current, SessionMode = SessionMode.Allowed)]
public interface IMyService

Реализация службы сейчас настроена следующим образом:

[ServiceBehavior(Namespace = Namespace.Current, InstanceContextMode = InstanceContextMode.PerSession)]
public class MyService : IMyService

Вот текущая настройка в моем конфигурационном файле для сериализатора контракта данных

<dataContractSerializer maxItemsInObjectGraph="1000000" />

1 Ответ

2 голосов
/ 04 августа 2011

Похоже, это не связано с режимом контекста экземпляра.
Попробуйте выполнить следующее:

  1. Используйте сниффер HTTP, например fiddler, для просмотра возвращенного файла WSDL.Убедитесь, что вы не получаете страницу с ошибкой вместо файла wsdl.
  2. Если вы получаете файл WSDL, а не страницу с ошибкой, сохраните этот файл, измените службу на одиночную, получите WSDL и сравните два файла WSDL, чтобы найти проблему.
...