У меня есть приложение Silverlight, которое использует WCF. Я хочу иметь уникальную информацию, основанную на пользователе Windows, который использует приложение; я хочу показать только данные для этого пользователя. Сайт будет размещен на IIS. Я сталкиваюсь с различными проблемами с этим ...
Первоначально я использовал HttpContext.Current
, но он начал возвращаться как нулевой, когда я размещал его в IIS (несмотря на использование проверки подлинности Windows).
У меня есть web.config:
<system.web>
<authentication mode="Windows"/>
<system.web>
Единственное, что меня интересует, это детали конфигурации клиента Silverlight. Привязки для этого имеют <security mode="None"/>
, но всякий раз, когда я пытаюсь изменить их, я получаю сообщение об ошибке.
В настоящее время я использую basicHttpBinding.
Я также установил aspNetCompatibility для своего сервиса, поэтому он должен обрабатывать HttpContext.
Вот мой файл ServiceReferences.ClientConfig:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="winAuthBinding" maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows" proxyCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="../service.svc"
binding="basicHttpBinding" bindingConfiguration="winAuthBinding"
contract="Contract1" name="name1" />
<endpoint address="../service.svc"
binding="basicHttpBinding" bindingConfiguration="winAuthBinding"
contract="Contract2" name="name2" />
<endpoint address="../service.svc"
binding="basicHttpBinding" bindingConfiguration="winAuthBinding"
contract="Contract3" name="name3" />
</client>
</system.serviceModel>
И web.config; Я вставлю только раздел system.serviceModel:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehaviour">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<bindings>
<basicHttpBinding>
<binding name="winAuthBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows"/>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service behaviorConfiguration="serviceBehaviour" name="name1">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="winAuthBinding"
contract="Contract1"/>
</service>
<service behaviorConfiguration="serviceBehaviour" name="name2">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="winAuthBinding"
contract="Contract2"/>
</service>
<service behaviorConfiguration="serviceBehaviour" name="name3">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="winAuthBinding"
contract="Contract3"/>
</service>
</services>
<client/>
</system.serviceModel>