Вызов службы WCF через Javascript, AJAX или JQuery - PullRequest
0 голосов
/ 13 января 2011

Я создал ряд стандартных сервисов WCF (Service Contract и Host (svc) находятся в отдельных сборках). Я запустил веб-сайт в IIS для размещения Служб (то есть, адрес http://services:1000/wcfservices.svc).

Затем в свой проект веб-сайта я добавил ссылку. Я могу нормально звонить в сервисы. Мне нужно позвонить в некоторые из служб на стороне клиента. Не уверен, стоит ли мне смотреть статьи, призывающие службы WCF через службы WCF с поддержкой AJAX, JQuery или JSON. Кто-нибудь может высказать какие-либо мысли или опыт с настройкой как таковой?

Некоторые из внесенных мною изменений добавили следующее к договору на эксплуатацию:

[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "SetFoo")]
void SetFoo(string Id);

Тогда это выше реализации интерфейса:

[AspNetCompatibilityRequirements(RequirementsMode = 
                            AspNetCompatibilityRequirementsMode.Allowed)]

Тогда в сервисе webconfig у меня есть это (символы в скобках):

<serviceHostingEnvironment aspNetCompatibilityEnabled="true">
  <baseAddressPrefixFilters>
    <add prefix="http://services:1000/wcfservices.svc/"/>>
  </baseAddressPrefixFilters>
</serviceHostingEnvironment>
<serviceHostingEnvironment multipleSiteBindingsEnabled="false" />

Затем на стороне клиента я попытался это сделать:

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
    <compositeScript>
        <Scripts>
            <asp:ScriptReference 
                      Path="http://Flixsit:1000/FlixsitWebServices.svc" />
        </Scripts>
    </CompositeScript>
</asp:ScriptManagerProxy>

Я пытаюсь вызвать службу следующим образом в javascript:

wcfservices.SetFoo(string Id);  

Ничего не работает. Если это идея или лучшее решение для вызова JSON enable, JQuery и т. Д. ... Я готов внести любые изменения.

Спасибо за любые предложения / советы ....

1 Ответ

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

Та же самая политика происхождения не позволит клиенту делать вызовы AJAX для службы, расположенной в другом домене (другом хосте), чем тот, который обслуживает веб-страницу. Вы можете сделать это, используя JSONP вместо JSON. Вам нужно изменить службу, чтобы она принимала функцию обратного вызова и доставляла клиенту немного JavaScript, вызывающего этот обратный вызов с данными JSON.

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