ranio Ответов: 1

Почему я получаю пустой ответ при вызове службы WCF, размещенной в качестве сервера через службу windows в ASP.NET с помощью C#?


Я получаю пустой ответ при вызове службы WCF, размещенной в качестве сервера через службу windows в asp.net с помощью C#.Ссылка на службу WCF и ее dll были добавлены в службу windows, и она была обновлена для вызова сервера, но никакого ответа от службы не поступало. Никаких исключений не было, но ответа не последовало.

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

Что я уже пробовал:

Основная часть кода
Часть WCF:
интерфейсная часть
[ServiceContract(CallbackContract = typeof(IWebSocketTestCallback))]
  public interface IWebSocketTest
  {
      [OperationContract(IsOneWay = true)]
      Task EncAndSendFinancial(string strRequestAPI);
  }
  public interface IWebSocketTestCallback
  {
      [OperationContract(IsOneWay = true)]
      Task OnEncAndSendFinancial(string strRequestAPI);
  }

В WCF.в CS часть
Task IWebSocketTest.EncAndSendFinancial(string strRequestAPI)
      {
          var callback = OperationContext.Current.GetCallbackChannel<IWebSocketTestCallback>();
          return callback.OnEncAndSendFinancial("Hi Alex:"+ strRequestAPI); //pass response API

      }


Служба Windows вызывает callbackhandler:
var context = new InstanceContext(new WCFServiceCallbackHandler());
                   var client = new ServiceReference1.WebSocketTestClient(context);

private class WCFServiceCallbackHandler : ServiceReference1.IWebSocketTestCallback
       {
           void ServiceReference1.IWebSocketTestCallback.OnEncAndSendFinancial(string strRequestAPI)
           {
               Console.WriteLine(strRequestAPI);

               string filePath = ConfigurationSettings.AppSettings["filepath"].ToString().Trim();


               using (StreamWriter writer = new StreamWriter(filePath, true))
               {
                   writer.WriteLine("Message :" + strRequestAPI + "<br/>" + Environment.NewLine);
                   writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
               }
           }
       }

1 Ответов

Рейтинг:
1

Sajjid Atta

Ваша проблема кажется такой же, как и в этот поток msdn . "Служба Windows не имеет дескрипторов; поэтому обратный вызов не может быть вызван". Попробуйте использовать синхронный метод WCF, который может решить вашу проблему.