Хорошо, ... сначала факты.
Я работаю над проектом 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 секунд или около того, и в конечном итоге выдает FaultException<T>
, который я можно поймать на сервисной стороне.
Очевидно, мое первое предположение было, что в получателе этого свойства была какая-то логика, которая лениво загружает свойство, но его нет; на самом деле это автоматически реализованное свойство!
Еще более странно, чем ... в вызывающем коде я даже не могу поймать исключение, которое говорит мне, что запрос поступает из другого потока, чем тот, который я выполняю.
Эта же проблема возникает для любого доступа к свойству этого объекта, независимо от того, переопределен он или полностью новый.
Кто-нибудь видел что-нибудь подобное раньше? Я уже 2 дня чешу голову и не знаю, что делать дальше.
Любая помощь будет отличной.
Спасибо заранее.
Stimul8d