Попробуйте добавить это в свою конфигурацию
directConnect: true,
Примечание: удалите seleniumAddress
из вашей конфигурации, если вы используете directConnect
.
Для обновления веб-драйвера перейдите в папку вашего проекта и запустите node node_modules/protractor/bin/webdriver-manager update
Сессия действительно существует только во время обработки действия - я не ожидаю этого быть действительным в конструкторе контроллера. Например, контроллер (насколько мне известно) может быть повторно использован между запросами.
Вам нужно будет сделать это либо в действии (методе), либо (возможно, более уместно) в фильтре действия, либо в Метод OnActionExecuting
(и т. Д.):
public abstract class ControllerBase : Controller
{
protected override void OnActionExecuting(
ActionExecutingContext filterContext)
{
// code involving this.Session // edited to simplify
base.OnActionExecuting(filterContext); // re-added in edit
}
}
[] - это индексатор, он действует как метод в классе.
В этом случае Session имеет значение null, и вы не можете выполнить индексирование по нему.
Сделайте это:
if(Session != null && Session["value"] != null)
{
// code
}
Вам нужно будет сделать это так-
if(null != HttpContext.Current.Session["Value"])
{
//Code here.
}
Вы получаете эту ошибку, потому что объект "Session" является нулевым. Поэтому невозможно взглянуть на бит ["value"]. Я не знаком с MVC, но либо есть большая проблема, из-за которой объект Session не создается, либо вы обращаетесь к нему не в той точке жизненного цикла, или вам просто нужен тест, чтобы проверить, является ли Session! = нуль.
Используемый вами синтаксис:
if (Session["mySessionVariable"] != null)
{
}
... является правильным способом проверки объекта Session в ASP .СЕТЬ. Я подозреваю, что проблема в том, что вы используете ASP.NET MVC.
Может быть, некоторые из наших экспертов MVC могут рассказать нам о правильном способе сделать это в ASP.NET MVC.
Редактировать: Я вижу, что Марк Гравелл опубликовал свой ответ, пока я печатаю это. Это должно быть осветительно.