У меня есть стандартный сайт ASP.NET MVC с аутентификацией форм.
Пользователи входят через веб-страницу. Тогда они могут добраться до приложения Silverlight. Когда они входят в систему, я передаю им файл авторизации форм, как и любой другой сайт:
FormsAuthentication.SetAuthCookie(userName, createPersistentCookie);
Файл XAP находится в папке ~ / ClientBin /. Файл SVC находится в папке ~ / Services /. Анонимный доступ заблокирован:
<configuration>
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</configuration>
При вызове Silverlight к SVC HTTP 302 возвращается на страницу входа и происходит сбой Silverlight. :( Это происходит только когда анонимный доступ отключен. Я думаю, что Silverlight НЕ передает cookie вместе с вызовом службы WCF. Почему бы и нет?
Я убедился, что использовал AspNetCompatibilityRequirements, как определено в документации (http://msdn.microsoft.com/en-us/library/dd560702(VS.95).aspx):
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
public class TaskSchedulerService : ITaskSchedulerService
{
и мой web.config имеет
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
То же самое происходит при использовании basicHttpBinding или customBinding с включенным BinaryCompression.