Здравствуйте! Такая ситуация когда выполняется вызов метода получения UserConnection
через БП, то возникает ошибка, если на прямую из клиента через сервис, но всё нормально, ошибок нет. В чем здесь дело?
Нравится
Добрый день, Александр.
Получение экземпляра UserConnection из объекта HttpContext (контекст запроса) возможно только в рамках веб-запроса к сервису. При вызове метода сервиса вручную (например, если создать экземпляр класса сервиса и вызвать нужный метод) нет контекста запроса, поэтому, при получении вы получаете ошибку.
При написании веб сервисов хорошая практика - не писать код обработки непосредственно в методах сервиса, а писать её в рамках некоторого вспомогательного класса. В класс следует добавить конструктор, который принимает объект UserConnection.
При вызове из метода сервиса, вы можете создать экземпляр данного вспомогательного класса и передать в конструктор экземпляр UserConnection, получив его из объекта HttpContext (как вы делаете в примере), а затем вызвать нужный метод вспомогательного класса.
При необходимости вызвать тот же код в другом месте, вы так же создаете экземпляр данного вспомогательного класса, передаете ему экземпляр UserConnection (способ его получения будет отличаться от использования в сервисе), а затем тек же вызвать нужный метод вспомогательного класса.
Получить экземпляр UserConnection в бизнес-процессах можно следующими способами (в зависимости от того интерпретируемый процесс, или нет):
var userConnection = Get<UserConnection>("UserConnection");
var userConnection = context.UserConnection;
В рамках процессов объектов можно воспользоваться одноименным свойством - UserConnection.
Добрый день, Александр.
Получение экземпляра UserConnection из объекта HttpContext (контекст запроса) возможно только в рамках веб-запроса к сервису. При вызове метода сервиса вручную (например, если создать экземпляр класса сервиса и вызвать нужный метод) нет контекста запроса, поэтому, при получении вы получаете ошибку.
При написании веб сервисов хорошая практика - не писать код обработки непосредственно в методах сервиса, а писать её в рамках некоторого вспомогательного класса. В класс следует добавить конструктор, который принимает объект UserConnection.
При вызове из метода сервиса, вы можете создать экземпляр данного вспомогательного класса и передать в конструктор экземпляр UserConnection, получив его из объекта HttpContext (как вы делаете в примере), а затем вызвать нужный метод вспомогательного класса.
При необходимости вызвать тот же код в другом месте, вы так же создаете экземпляр данного вспомогательного класса, передаете ему экземпляр UserConnection (способ его получения будет отличаться от использования в сервисе), а затем тек же вызвать нужный метод вспомогательного класса.
Получить экземпляр UserConnection в бизнес-процессах можно следующими способами (в зависимости от того интерпретируемый процесс, или нет):
var userConnection = Get<UserConnection>("UserConnection");
var userConnection = context.UserConnection;
В рамках процессов объектов можно воспользоваться одноименным свойством - UserConnection.
Семенов Александр Евгеньевич,
Спасибо большое за ответ, разобрался всё работает)