Служба WCF (svc), но клиент хочет подключиться так, как если бы он был ".asmx" - PullRequest
0 голосов
/ 18 января 2011

У меня есть этот сценарий.Клиент попросил нас иметь веб-сервис.Я создал Службу WCF.После того, как мы отправили наш URL в описание веб-службы, клиент говорит:

Поскольку мы не можем использовать службу WCF, можете ли вы опубликовать ее в веб-службе?

Теперь мне интересно, они просят меня за asmx ... верно?Есть ли способ, которым я могу «предложить» свою службу WCF в качестве службы asmx, чтобы мне не нужно было переписывать ее целиком?

Мое первое «решение» - получить файл .asmx, вызывающий my.SVC файлы напрямую ... я не знаю.Я не пробовал, но я иду в этом направлении.

Любые идеи будут высоко оценены.

Тони

Ответы [ 2 ]

0 голосов
/ 27 мая 2015

Это очень возможно. Выполните шаги, указанные ниже, и вы сможете представить службу WCF в качестве конечной точки ASMX.

  1. Добавить новый файл веб-службы (.asmx)
  2. Теперь откройте узел веб-файла .asmx и удалите файл .asmx.cs
  3. После удаления файла .cs.Вы найдете файл wcfasasmx.asmx.
  4. У меня есть имя класса WCF как Service1 (из базовой службы WCF), и этот класс присутствует в текущем пространстве имен.Поэтому я изменил имя класса как mynamespace.Service1

  5. Некоторые изменения - это код, показанный ниже -

  6. В файле web.config в тег добавьте следующий код

      <system.web>
       <webServices>
         <conformanceWarnings>
           <remove name='BasicProfile1_1'/>
         </conformanceWarnings>
       </webServices>
      </system.web>
    
  7. Добавить следующие 2 атрибута на интерфейсе (на контракт на обслуживание WCF)

     [WebService(Name = "Service1")]
     [WebServiceBinding(Name = "Service1", ConformsTo =   WsiProfiles.BasicProfile1_1, EmitConformanceClaims = true)]
    
  8. Добавить [Атрибут WebMethod] в каждом контракте на операцию.

    [OperationContract]
    [WebMethod] 
    string GetData(int value);
    

Ваша служба теперь также может использоваться клиентом asmx.

0 голосов
/ 18 января 2011

Это полностью выполнимо.Просто используйте конечную точку, которая предоставляет сервис, используя basicHttpBinding или wsHttpBinding.«Расширение файла» URL не имеет никакого значения для клиента, только содержимое запроса / ответа.

Вот ссылка на другой вопрос SO: Конечные точки REST / SOAPWCF сервис

...