好的,......首先是事实。
我正在开发一个ASP.Net项目,该项目通过WCF服务验证它的用户。我在共享程序集中有一个CutomMembershipUser
类,它继承自MembershipUser,因为我使用的是自定义成员资格提供程序。所有这一切都无法改变,因为它不在我的职权范围内。
这里大概是发生了什么。我在登录控件的Logged_In事件中有一些看起来像这样的代码......
CustomMembershipUser user = (CustomMembershipUser)SecurityBL.GetUser(userName);
if (user.Customer.ToLower() == "some user")
{
//impl omitted
}
第一行执行没有问题,我从服务中获得了正确的用户。但是,在第二行中,当我比较user.Customer
属性时,第二个请求被发送到具有空userName
字符串的服务,该字符串将整个IDE挂起大约30秒左右并最终抛出{ {1}}我可以在服务方面找到它。
显然我的第一个假设是,该属性的getter中有一些逻辑延迟加载属性但没有;事实上,这是一个自动实施的财产!
更奇怪的是,..在调用代码中,我甚至无法捕获异常,它告诉我请求来自与我正在执行的不同的线程。
此对象的任何属性访问都会出现同样的问题,无论是覆盖还是全新。
以前有人见过这样的事吗?我现在已经摸不着头脑了2天,我不知道下一步该尝试什么。
任何帮助都会很棒。
提前致谢。 Stimul8d
答案 0 :(得分:1)
会员资格非常直接,实际上并不了解网络通信,尤其是WCF,因此 代码中必然会发生一些奇怪的事情。真。
如果您想尝试隔离重现效果的最小代码并将其上传到某个地方,我很乐意看一下。