Использование службы wcf в jquery - PullRequest
1 голос
/ 15 марта 2011

Я сталкиваюсь с проблемой при использовании службы wcf. Ответ в ajax идет на функцию ошибки. URL-адрес совершенно правильно.

    $.ajax({
            type: "post",
            url: "http://192.168.1.3:16150/ajaxnewclinicalhost/Service.svc/gettablejson1",
            data: "{}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (msg) {
                alert(msg);
            },
            error: function () {
                alert("error");
            }
           });

Web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <compilation debug="false" targetFramework="4.0">
            <assemblies>
                <add assembly="System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /></assemblies></compilation>
    </system.web>
    <system.serviceModel>
        <services>
   <service name="newclinicallibrary.Service1">
    <endpoint address="" binding="webHttpBinding" bindingConfiguration="" behaviorConfiguration="WEB" contract="newclinicallibrary.IService1" />
   </service>
  </services>
  <behaviors>
            <serviceBehaviors>
                <behavior>
                    <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                    <serviceMetadata httpGetEnabled="true" />
                    <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="WEB">
          <webHttp />
        </behavior>
      </endpointBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    </system.serviceModel>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
        <directoryBrowse enabled="true" />
    </system.webServer>
</configuration>

1 Ответ

1 голос
/ 15 марта 2011

Каждый раз, когда вы делаете вызовы AJAX, вы должны помнить, что в целях безопасности браузер разрешает отправлять запросы только по URL-адресам в том же домене, что и сама страница.Поэтому, если ваша страница не обслуживается с номера http://192.168.1.3,, вы не сможете совершать вызовы AJAX в службу WCF.

Если это действительно так, вы можете попробовать один из следующих способов:следующее:

  • Разместите WCF на поддомене вашего веб-сайта (возможно, проблемы с безопасностью из-за разного порта).
  • Напишите на своем веб-сайте промежуточный скрипт,запросы брокеров к вашей службе WCF.
  • Не используйте WCF - вместо этого разместите свои функции в сценарии на своем веб-сайте.Если вы используете ASP.NET, то подойдет ASHX или веб-модуль.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...