Signalr 独立Dll中的信号器集线器

Signalr 独立Dll中的信号器集线器,signalr,signalr-hub,Signalr,Signalr Hub,我在一个控制台应用程序中托管了一个集线器,并连接了一个WPF应用程序。效果很好。然后,我将中心移动到一个单独的项目中,并将一个引用从宿主添加到新项目中。现在我得到一个500错误,没有其他细节 为了从另一个程序集/命名空间托管集线器,是否需要执行任何不同的操作 编辑: 在开始提问后,我尝试了一些事情。以下是我迄今为止所尝试的: 正在设置HubName属性。-不起作用 将完整命名空间+类传递到 HubConnection.CreateHubProxy。-不起作用 将我的中心类放入同一个项目中,但命

我在一个控制台应用程序中托管了一个集线器,并连接了一个WPF应用程序。效果很好。然后,我将中心移动到一个单独的项目中,并将一个引用从宿主添加到新项目中。现在我得到一个500错误,没有其他细节

为了从另一个程序集/命名空间托管集线器,是否需要执行任何不同的操作

编辑: 在开始提问后,我尝试了一些事情。以下是我迄今为止所尝试的:

  • 正在设置HubName属性。-不起作用
  • 将完整命名空间+类传递到 HubConnection.CreateHubProxy。-不起作用
  • 将我的中心类放入同一个项目中,但命名空间不同。-这起作用了
下面是返回的异常。 “System.Net.WebException:远程服务器返回错误:(500)内部服务器错误。 位于System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 位于Microsoft.AspNet.signal.Client.Http.HttpHelper.c_DisplayClass2.b_0(IAsyncResult ar)
在System.Threading.Tasks.TaskFactory
1.FromAsyncCoreLogic(IAsyncResult iar,Func
2 endFunction,Action
1 endAction,Task
1 promise,Boolean requiresSynchronization)

尝试查看http响应消息

        try
        {
            hubConnection.Start().Wait();
        }
        catch (Exception error)
        {
            if (error.InnerException is WebException)
            {
                WebException webError = (WebException)error.InnerException;
                Console.WriteLine(webError.Status);
                Console.WriteLine(webError.Response);
            }
        }

您是否已将注册集线器的调用移动到新的dll?也就是说,您的新项目中需要包含以下内容(但仍然从global.asax调用):

您可能还需要在新的RegisterHubs类中使用[WebActivator PreApplicationStart属性](),以确保及时注册它

这对我来说很有效(在启动时)


归功于

确保单独的DLL引用了Microsoft.CSharp.DLL,
动态
代码需要该DLL

这说明:ProtocolError System.Net.httpwebresponse对MapHubs的调用仍然存在于主机中。我知道集线器在第一次呼叫之前就已经注册了,因为我在启动客户端之前启动了主机。啊,是的,对不起,我似乎根本没有正确回答你的问题。让我想想
RouteTable.Routes.MapHubs();
AppDomain.CurrentDomain.Load(typeof(MyHub).Assembly.FullName);