Request.ServerVariables ["LOGON_USER"] возвращает пустую строку в Visual Studio 2015 (VS2015) - PullRequest
0 голосов
/ 08 мая 2019

У меня есть веб-приложение ASP.NET MVC 5, запущенное в VS2012 на моем локальном Dev с IIS Express. Недавно я мигрировал с VS2012 на VS2015 с той же кодовой базой.

Чего я хочу достичь: Я хочу, чтобы мое приложение успешно работало в VS2015 и на моем сервере развертывания с IIS7

Мой текущий код:

Режим аутентификации : формы

Авторизация : разрешить анонимных пользователей

"Request.ServerVariables [" LOGON_USER "]" возвращает правильные данные пользователя

Но, когда я пытаюсь выполнить тот же код в VS2015 с IIS Express, Request.ServerVariables ["LOGON_USER"] возвращает пустую строку

Но тот же код отлично работает на моем сервере развертывания с IIS7

Мой оригинальный код в LoginController.cs

var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.ServerVariables["LOGON_USER"]);

if (userIdentity.IsAuthenticated)
{
..............
}

Оригинальный код в Web.config

    <authentication mode="Forms">
      <forms loginUrl="~/Login/Login" timeout="2800"/>
    </authentication>

<system.web>
      <authorization>
        <allow users="*"/>      
      </authorization>
    </system.web>

Чтобы исправить эту проблему, я попробовал следующее

Попробуйте 1: Изменил мой контроллер входа в систему с

var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.ServerVariables["LOGON_USER"]);

до

var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.LogonUserIdentity.Name)

И

Попробуйте 2:

var userIdentity = new GenericIdentity(System.Security.Principal.WindowsIdentity.GetCurrent().Name);

Результат: userIdentity.IsAuthenticated возвращает true как для Try1, так и для try2

Оба отлично работают на локальном компьютере, но не работают, когда измененный код в LoginController.cs развернут на сервере (сервер IIS7).

Попробуйте 3: В веб-приложении web.config отключен анонимный доступ.

<authorization>
   <deny users = "?" /> <!-- This denies access to the Anonymous user -->
   <allow users ="*" /> <!-- This allows access to all users -->
</authorization>

Но я сохранил код LoginController.cs такой же, как и в оригинальном

var userIdentity = new GenericIdentity(ControllerContext.HttpContext.Request.ServerVariables["LOGON_USER"]);

Результат: Даже это не сработало. «Request.ServerVariables [« LOGON_USER »]» возвращает пустую строку


У меня появилась эта проблема, когда я переключил свою IDE с VS2012 на VS2015.

Что бы я ни пытался, он либо отлично работает на локальном VS2015 с IIS Express, либо на моем сервере развертывания.

Я хочу сделать исправление, которое заставит мою функцию входа в систему работать на моем локальном Dev Env с Vs2015, а также на сервере развертывания, чтобы все разработчики могли перейти на использование VS2015 для проекта.

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...