У меня есть служба RIA (CustomDomainService), которая состоит из нескольких методов, требующих аутентификации. Аутентификация обеспечивается службой аутентификации (AuthenticationDomainService). Все работает из Silverlight, который является основным клиентом.
Теперь мне нужно открыть пару существующих методов через SOAP. Поэтому я изменил конфигурацию web.config, чтобы разрешить доступ через SOAP:
<domainServices>
<endpoints>
<add name="soap" type="Microsoft.ServiceModel.DomainServices.Hosting.SoapXmlEndpointFactory,
Microsoft.ServiceModel.DomainServices.Hosting, Version=4.0.0.0,
Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
</endpoints>
</domainServices>
В приложении Windows Form, которое я создал для целей тестирования, я добавил ссылку на веб-службу SOAP.
Я могу войти в службу аутентификации без каких-либо ошибок, но я все еще получаю сообщение «Отказано в доступе» для любого вызова веб-метода в фактической службе:
var auth = new myAuth.AuthenticationDomainService();
auth.Login("username", "password", true, false, "");
var svc = new myService.myDomainService();
var res = svc.GetDataByCustomerCode("", DateTime.Now, true, DateTime.Now, true);
Я читал, что служба аутентификации должна возвращать некоторые файлы cookie, и их следует использовать в реальной бизнес-службе. Однако после вызова входа в систему я не вижу никаких файлов cookie в auth.CookieContainer. Кроме того, у меня нет свойства InnerChannel, которое я мог бы использовать для получения назначенного файла cookie.
Может ли кто-нибудь указать мне, что я делаю неправильно?
Заранее спасибо, С уважением, Г.