jsonp с wcf работает с сервером vs.net, но НЕ на IIS - PullRequest
0 голосов
/ 26 октября 2011

Это сводит меня с ума.У меня есть .net 4, служба wcf, которая выводит jsonp.Он работает с использованием встроенного веб-сервера с vs.net, однако, если я пытаюсь разместить в iis7 на Windows 7 64bit, я не получаю никакого ответа.

Если я пытаюсь перейти к файлу svc, находясь в iis7Я получаю

«Настройки безопасности для этой службы требуют« анонимной »аутентификации, но она не включена для приложения IIS, на котором размещена эта служба.»

При попытке доступа через клиентский запрос jquery jsonp iне получают ответа от службы, размещенной в iis7

Итак, конфигурация службы (web.config) в порядке, если она размещена на веб-сервере vs.net (просто не работает с iis)

Вот конфиг

   <system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="webHttpBehavior">
        <webHttp />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <bindings>
    <webHttpBinding>
      <binding name="webHttpBindingWithJsonP" crossDomainScriptAccessEnabled="true" />
    </webHttpBinding>
  </bindings>
  <services>
    <service name="ServiceSite.CustomersService">
      <endpoint address="" binding="webHttpBinding"
                bindingConfiguration="webHttpBindingWithJsonP" contract="ServiceSite.CustomersService"
                behaviorConfiguration="webHttpBehavior"/>
    </service>
  </services>
</system.serviceModel>

<system.web>
    <compilation debug="true" targetFramework="4.0" />
</system.web>
<system.webServer>
  <modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>

Сайт должен быть защищен ntlm / windows.Я добавил следующее в раздел привязок web.config

            <security mode="TransportCredentialOnly">
          <transport clientCredentialType="Ntlm"/>
        </security>

При просмотре файла SVC теперь я получаю, что кросс-доменный javascript callback не поддерживается в аутентифицированных сервисах. Действительно?Это правда, что jsonp не поддерживается?

Ответы [ 2 ]

0 голосов
/ 04 ноября 2011

Я совершенно уверен, что из-за того, как междоменный JSONP работает с сегодняшними недостатками, вам всегда нужно внедрять собственную систему безопасности.

Я использую безопасность SSL и HMAC для междоменной аутентификации JSONP. Я делаю аутентификацию самостоятельно на сервисе.

При выполнении JSONP вы не можете устанавливать заголовки или что-то еще в запросе, потому что это делается путем добавления тегов, а не фактического объекта запроса XMLHTTP.

0 голосов
/ 26 октября 2011

Это, вероятно, является симптомом неправильной настройки веб-сайта. Перейдите к функции проверки подлинности веб-сайта в диспетчере IIS и убедитесь, что она настроена.

Sample

...