SignalR IHubContext в задаче WebRole

Я тестирую приложение SignalR, которое будет работать в веб-роли Azure. У меня есть поток фоновой обработки, созданный в OnStart WebRole.

Когда я пытаюсь использовать IHubContext для отправки группового сообщения, он терпит неудачу без ошибок - сообщение никогда не получается в клиенте концентратора. Тот же код, созданный внутри Global.asax, будет работать правильно.

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports Microsoft.WindowsAzure
Imports Microsoft.WindowsAzure.Diagnostics
Imports Microsoft.WindowsAzure.ServiceRuntime
Imports Microsoft.AspNet.SignalR
Imports System.Threading.Tasks

Public Class WebRole
    Inherits RoleEntryPoint

    Public Overrides Function OnStart() As Boolean

        Task.Factory.StartNew(Sub() AsyncTaskTest())

        Return MyBase.OnStart()
    End Function

    Private Sub AsyncTaskTest()

        Do
            Threading.Thread.Sleep(10000)

            Dim Context As IHubContext = GlobalHost.ConnectionManager.GetHubContext(Of Testub)()
            Context.Clients.Group("testgroup").Message("This is a delayed message from the WebRole thread.")
        Loop

    End Sub

End Class

Можно ли таким образом использовать IHubContext? Считается ли это отдельной сборкой и потребует ли использования HubConnection? Если я не могу использовать IHubContext, я вернусь к использованию этого внутри Global.asax и сохраню работоспособность веб-приложения.

Спасибо, Даниэль


person Daniel Tallentire    schedule 21.05.2013    source источник


Ответы (1)


Я думаю, это связано с методом OnStart веб-ролей и веб-приложениями, которые являются двумя разными процессами.

person SudheerKovalam    schedule 26.02.2014
comment
Архитектура, включая макет процесса, полностью описана в blogs.msdn.com/b/kwill/archive/2011/05/05/ - person Daniel Tallentire; 31.03.2014