我有一个使用RIA服务的silverlight应用程序。我想重用RIA服务组件并从另一个Web服务调用它。 Web服务和RIA服务组件将位于同一服务器上。
我已经走得很远,我的网络服务项目对RIA服务项目有一个“服务参考”,这一切都很好。但是当我调用其中一个RIA服务方法时,我得到了例外,
{DDB20766-F78A-42c7-B777-5ECF0AD9E4F3}Access to operation 'GetValidId' was denied.
at System.ServiceModel.DomainServices.Server.DomainService.ValidateMethodPermissions(DomainOperationEntry domainOperationEntry, Object entity)
RIA服务域类具有[RequiresAuthentication]属性。我想了解如何指定这些凭据并进行身份验证?
就像测试一样,我注释掉了[RequiresAuthentication]属性,一切都没有任何问题。
答案 0 :(得分:1)
点击此链接:
http://www.ben-morris.com/using-the-wcf-authentication-service-without-cookies
基本上,您必须首先成功对服务器进行身份验证,并让服务器向您发送一个身份验证cookie,您可以通过编程方式将[RequiresAuthentication]打开后添加到对WCF RIA方法的后续请求中。
注意,要使其工作,在客户端程序中,在设置WCF绑定以调用服务器WCF RIA方法时,请确保allowCookies =“false”;这将允许上述链接中的代码实际上能够在标题中手动设置cookie。