#vb.net #iis-express
#vb.net #iis-express
Вопрос:
Недавно установив IIS Express, я надеялся, что это облегчит мне жизнь, но почти сразу столкнулся с проблемой.
Рассмотрим следующее, которое является репрезентативным для некоторого текущего кода:
Public Shared Function GetServiceId() As String
Dim principal As MyCustomAuthentication.Principal.MyPrincipal
principal = CType(Thread.CurrentPrincipal, MyCustomAuthentication.Principal.MyPrincipal)
.
.
.
.
End Function
Запуск кода под ASP.NET С веб-сервером (Cassini) все в порядке, и я вижу этот поток.CurrentPrincipal имеет тип MyCustomAuthentication.Принципал.Мой главный.
Запуск под IIS Express этой же строки вызывает исключение InvalidCastException и проверяет тип, который, как я нахожу, теперь принадлежит System.Безопасность.Принципал.GenericPrincipal, который сбивает с толку, поскольку больше ничего не изменилось.
Я могу подтвердить, что MyCustomAuthentication.Принципал.MyPrincipal реализует IPrincipal и помните, что это живой код, он в данный момент развернут и работает.
Кто-нибудь может пролить свет на то, что здесь происходит?
Комментарии:
1. Вы когда-нибудь решали эту проблему? У меня такая же проблема
2. @LillyPop: Боюсь, я так и не решил эту проблему — думаю, в итоге я использовал полноценный IIS, и он отлично работал (больше года назад, и сейчас я ушел с этой работы).
Ответ №1:
Я думаю, вам нужен HttpContext.Current.Вместо этого пользователь. Идентификатор текущего пользователя не совпадает с идентификатором текущего потока.
Комментарии:
1. Спасибо, Скотт — я попробую, когда вернусь к работе (длинные выходные). Я не понимаю, почему это работает в рабочей среде, но не в IIS Express.
2. Я обновил код, но проблема остается — HttpContext.Current. Пользователь подключается как система. Безопасность. Принципал. GenericPrincipal и я получаю исключение InvalidCastException.