信号集线器在单独的Dll



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

是否有什么不同,需要做的是为了从另一个组装/命名空间托管集线器?

编辑:在开始提问后,我尝试了一些方法。以下是我到目前为止所做的尝试:

  • 设置HubName属性。
  • 将完整的命名空间+类传递给HubConnection.CreateHubProxy。-没用。
  • 将我的hub类放入相同的项目中,但使用不同的命名空间。

这里是被传递回来的异常。"System.Net。web异常:远程服务器返回一个错误:(500)内部服务器错误。在System.Net.HttpWebRequest。EndGetResponse (IAsyncResult asyncResult)在Microsoft.AspNet.SignalR.Client.Http.HttpHelper灵活;> c_ DisplayClass2。b _0 (IAsyncResult ar)(1) 1.FromAsyncCoreLogic(IAsyncResult iar, Func . endFunction, Action 1 endAction, Task . promise, Boolean requiresSynchronization)"

这对我有用(在启动时)

AppDomain.CurrentDomain.Load(typeof(MyHub).Assembly.FullName);

参考项目中映射中心的积分

尝试查看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调用):

RouteTable.Routes.MapHubs();

您可能还需要在新的RegisterHubs类中使用[WebActivator PreApplicationStart属性](http://msdn.microsoft.com/en-us/library/system.web.preapplicationstartmethodattribute.aspx)来确保它及时注册

确保单独的DLL有对Microsoft.CSharp.dll的引用-这是dynamic代码所需要的。

最新更新