Клиентское исключение WCF REST - PullRequest
1 голос
/ 28 сентября 2010

У меня следующий код клиента WCF:

string add = String.Format("http://localhost:{0}/ServiceRequestRest",accessPort);
var cf = new ChannelFactory<IServiceRequestRest>(new WebHttpBinding(), add);
cf.Endpoint.Behaviors.Add(new WebHttpBehavior());
busService = cf.CreateChannel();

busService.DoMyStuff("hello",null);

Когда у меня активирован «разрыв первого шанса», последняя строка кода генерирует серию исключений.Первое исключение:

System.InvalidOperationException occurred
  Message="Envelope Version 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' does not support adding Message Headers."
  Source="System.ServiceModel"
  StackTrace:
       at System.ServiceModel.Channels.MessageHeaders.ValidateHeaderKind(HeaderKind headerKind)

Я не знаю, что я пытаюсь «добавить заголовки сообщений», но я решил продолжить выполнение и сразу получить следующее исключение:

System.Net.WebException occurred
  Message="The underlying connection was closed: The connection was closed unexpectedly."
  Source="System"
  StackTrace:
       at System.Net.HttpWebRequest.GetResponse()

После всего сказанного мне трудно понять, в чем проблема.Любые подсказки?

Обновление : Невозможно сериализовать тип возврата моего вызова REST, как я узнал из другого сайта .Это само по себе может вызвать эту проблему, но после того, как я исправил ее, у меня все еще была та же проблема.Когда я использую обычный блок catch для исключения, все, что я получаю, это «соединение было неожиданно закрыто».Что еще я мог упустить?

Обновление2 : Мне кажется, я нашел последнюю проблему.Я получаю помехи от Skype .Код работает сейчас.:)

1 Ответ

0 голосов
/ 28 сентября 2010

Основная проблема, которую я вижу, заключается в том, что вы пытаетесь использовать канал WCF для связи с помощью WebHttpBinding.

ИМХО вся цель WebHttpBinding заключалась в том, чтобы клиенту не приходилось использовать стек WCF для связи с ним. Вы просто используете любой стек HTTP для выполнения запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...