Конфигурация WCF для аутентификации Windows и jQuery - PullRequest
0 голосов
/ 22 сентября 2011

У меня есть приложение ASP.NET MVC, которое использует проверку подлинности Windows.Мне бы хотелось, чтобы это приложение вызывало службу WCF, которая находится в том же приложении.Тем не менее, я не могу сломать часть конфигурации для этого приложения.И ASP.NET MVC, и служба WCF находятся в одном проекте.Вот конфигурация, которую я имею до сих пор:

<system.serviceModel>
    <behaviors>
        <serviceBehaviors>
            <behavior>
                <serviceDebug includeExceptionDetailInFaults="true" />
                <serviceMetadata httpGetEnabled="true" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
    <bindings>
        <basicHttpBinding>
            <binding>
                <security mode="TransportCredentialOnly" >
                    <transport clientCredentialType="Windows" proxyCredentialType="Windows" />
                </security>
            </binding>
        </basicHttpBinding>
    </bindings>
    <services>
        <service name="DashboardService">
            <endpoint address="" binding="basicHttpBinding" contract="MyApplication.Services.ICustomService" />
        </service>
    </services>
    <client>
        <endpoint address="" binding="basicHttpBinding" contract="MyApplication.Services.ICustomService" />
    </client>
</system.serviceModel>

Я пытался подключиться к службе WCF, используя ссылку на службу в другом приложении ASP.NET, метод работает правильно, и я могу вернуть нужные данные,

Однако, с этим конфигом, я получаю 400, Плохой запрос при посещении http://domain/myservice.svc/method. Однако оба http://domain/myservice.svc и http://domain/myservice.svc?wsdl работает правильно.

Похоже, я что-то упускаю из виду в своей конфигурации WCF.

Любая помощь, которая может быть предоставлена, приветствуется.

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Я смог изменить свою конфигурацию для использования привязки webHttp следующим образом:

<system.serviceModel>
<behaviors>
    <serviceBehaviors>
        <behavior>
            <serviceMetadata httpGetEnabled="true"/>
            <serviceDebug includeExceptionDetailInFaults="true"/>
        </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
        <behavior name="RestEndpoint">
            <webHttp/>
        </behavior>
    </endpointBehaviors>
</behaviors>
<bindings>
    <webHttpBinding>
        <binding name ="WindowsRestBinding">
            <security mode ="TransportCredentialOnly">
                <transport clientCredentialType ="Windows"/>
            </security>
        </binding>
    </webHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
    <service name="MyApplication.Services.CustomService">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="WindowsRestBinding" contract="MyApplication.Services.ICustomService" behaviorConfiguration="RestEndpoint" />
    </service>
</services>

0 голосов
/ 22 сентября 2011

Попробуйте

<security mode="Transport" >

Вместо

<security mode="TransportCredentialOnly" >
...