Wcf data services WCF-RIA:第二次函数调用后拒绝访问

Wcf data services WCF-RIA:第二次函数调用后拒绝访问,wcf-data-services,wcf-ria-services,Wcf Data Services,Wcf Ria Services,我有一个使用Silverlight和WCF RIA的Web应用程序。该应用程序还使用表单身份验证和HTTP。 Silverlight应用程序调用具有多个公共函数的DomainService。域类的顶部是属性: [需要重新验证] [启用客户端访问] 此应用程序和域服务已经运行了很长一段时间,但突然,在多台测试机器上,我们开始出现错误: System.ServiceModel.DomainServices.Client.DomainOperationException: 查询“MyFunction”

我有一个使用Silverlight和WCF RIA的Web应用程序。该应用程序还使用表单身份验证和HTTP。 Silverlight应用程序调用具有多个公共函数的DomainService。域类的顶部是属性:

[需要重新验证] [启用客户端访问]

此应用程序和域服务已经运行了很长一段时间,但突然,在多台测试机器上,我们开始出现错误:

System.ServiceModel.DomainServices.Client.DomainOperationException: 查询“MyFunction”的加载操作失败。进入运营 “MyFunction”被拒绝

问题是,这只会发生在第二天,以及随后对该服务的任何调用。例如,如果从我的Silverlight应用程序中,我首先调用function,这将正常工作,并且服务函数中的属性

this.ServiceContext.User.Identity.IsAuthenticated

返回True。但是如果我调用服务中的第二个函数,就会得到错误。如果我在第二个函数中设置断点,它将永远不会被命中

如果我注释掉属性[RequireAuthentication],那么一切都会再次起作用。为了安全起见,我需要对用户进行身份验证。当我返回到常规的aspx页面并检查身份验证时,用户仍然是经过身份验证的

我已经检查了我知道的所有可能的配置选项,无法跟踪此问题。它在第一次调用时起作用,但在每次调用时都会出现访问错误,这一事实令人费解

在服务中,我重写了Initialize函数,以便检查Identity属性并查看用户是否经过身份验证。第一次打电话

context.User.Identity.Name

具有价值和价值

IsAuthenticated==真

如前所述,我在服务中调用的第一个函数现在将成功,但我在服务context.User.Identity.Name中调用的第二个函数将是空字符串,IsAuthenticated将为false

问题是,我知道用户仍然在网站上进行身份验证,因为如果我重新加载Silverlight页面并再次调用该服务,第一个函数调用会将我视为已验证,然后第二个函数调用不会再次验证。此外,如果我返回到常规的非Silverlight aspx页面,我仍然是经过身份验证的

有什么想法吗


谢谢

我发现了这个问题。另一位程序员最近在app.xaml.cs中添加了以下代码行

WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
我把这行注释掉了,一切都好了,我可以要求对我的域服务进行身份验证