Прокси-код javascript WCF не найден, если адрес конечной точки не пуст - PullRequest
6 голосов
/ 07 ноября 2008

Я пытаюсь настроить службу WCF с несколькими конечными точками на одной из конечных точек, используя поведение конечной точки enableWebScript, чтобы на клиенте был создан прокси Javascript (jsdebug / js).

При добавлении ссылки на службу в мой AJAX ScriptManager файл jsdebug не найден, если только адрес конечной точки не указан. Прокси-сервер ScriptManager, кажется, всегда генерирует путь «MyService.svc / jsdebug» для поиска файла, даже если мой сервис имеет адрес «ajax». Прокси должен сгенерировать путь как «MyService.svc / ajax / jsdebug».

Есть ли настройка для получения прокси с правильным путем? Мой сервис находится в корне моего сайта.

работает:

<endpoint address="" 
  behaviorConfiguration="ajaxBehavior" 
  binding="webHttpBinding" 
  bindingConfiguration="webBinding" 
  contract="MyTest.Web.ICustomerService" />

хочу это (не работает):

<endpoint address="ajax" 
  behaviorConfiguration="ajaxBehavior" 
  binding="webHttpBinding" 
  bindingConfiguration="webBinding" 
  contract="MyTest.Web.ICustomerService" />

Ответы [ 2 ]

2 голосов
/ 28 марта 2009

<enableWebScript />, также известный как конечные точки с поддержкой AJAX, по существу жестко кодирует все, что связано с адресом, чтобы вы могли генерировать код на стороне клиента.

Жестко запрограммировано то, что все напрямую связано с файлом .svc.

См. Как: использовать конфигурацию для добавления конечной точки AJAX ASP.NET

Конечная точка настроена на пустую адрес относительно файла .svc, так услуга теперь доступна и может вызываться путем отправки запросов service.svc/<operation> - например, service.svc/Add для операции Add.

По этой причине вы не можете смешивать <enableWebScript /> с UriTemplate, что, на мой взгляд, отнимает половину удовольствия от WCF. См. enableWebScript, UriTemplate и методы HTTP .

Лично мне нравится настраивать мой URI и обслуживать как POX и JSON, так и SOAP. См. WCF RESTful POX, JSON и SOAP сосуществуют .

1 голос
/ 12 августа 2009

В ScriptManager поместите MyService.svc / ajax вместо MyService.svc

...