У меня есть приложение silverlight, которое извлекает данные из службы WCF, размещенной в службе Windows. Я включил проверку подлинности Windows в этой службе WCF, используя приведенную ниже в файле App.config.
<system.servicemodel>
<behaviors>
<endpointbehaviors>
<behavior name="webHttpBehavior">
<webhttp />
</behavior>
</endpointbehaviors>
<servicebehaviors>
<behavior name="defaultServiceBehavior">
<servicemetadata httpgetenabled="true" />
<servicedebug includeexceptiondetailinfaults="true" />
</behavior>
</servicebehaviors>
</behaviors>
<bindings>
<basichttpbinding>
<binding name="winAuthBasicHttpBinding" opentimeout="05:00" sendtimeout="05:00">
<security mode="TransportCredentialOnly">
<transport clientcredentialtype="Windows" />
</security>
</binding>
</basichttpbinding>
</bindings>
<servicehostingenvironment aspnetcompatibilityenabled="true" multiplesitebindingsenabled="true" />
<services>
<service behaviorconfiguration="defaultServiceBehavior" name="DataService.CrossDomainService">
<endpoint address="" behaviorconfiguration="webHttpBehavior" binding="webHttpBinding" contract="DataService.ICrossDomainService">
<identity>
<dns value="107.0.0.12" />
</identity>
</endpoint>
<host>
<baseAddresses>
<add baseaddress="http://107.0.0.12:2035/" />
</baseAddresses>
</host>
</service>
<service behaviorconfiguration="defaultServiceBehavior" name="DataService.NewDataService">
<endpoint address="" binding="basicHttpBinding" bindingconfiguration="winAuthBasicHttpBinding" contract="DataService.INewDataService">
<identity>
<dns value="107.0.0.12" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseaddress="http://107.0.0.12:2035/DataService/" />
</baseAddresses>
</host>
</service>
</services>
</system.servicemodel>
Также я включил проверку подлинности Windows в моем файле Web.config, как показано ниже:
<system.web>
<authentication mode="Windows" />
<identity impersonate="true" />
</system.web>
В IIS мой веб-сайт работает под управлением ASP.NET Classic App Pool. Под аутентификацией включены Олицетворение (Аутентифицированный пользователь) и Аутентификация Windows.
Теперь проблема в том, что когда я получаю доступ к этому приложению Silverlight с помощью IE8 или Chrome, я получаю всплывающее окно с запросом имени пользователя / пароля. Даже после ввода данных и выбора опции «Запомнить мои учетные данные» он снова появляется во второй раз. После ввода данных во второй раз, мое приложение открывается и работает нормально. Но как только я закрываю браузер и снова открываю его, а теперь снова пытаюсь зайти на мой сайт, это всплывающее окно появляется дважды.
Так что в настоящее время каждый раз, когда мы открываем веб-сайт, нам приходится дважды иметь дело с всплывающим окном входа в систему, прежде чем мы сможем использовать приложение.
Есть идеи?