信号中心在独立的Dll中

时间:2013-04-09 18:13:32

标签: signalr signalr-hub

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

为了从另一个汇编/命名空间托管集线器,还有什么不同需要做的吗?

编辑: 打开问题后我尝试了一些事情。这是我到目前为止所尝试的:

  • 设置HubName属性。 - 没用。
  • 将完整的命名空间+类传递给 HubConnection.CreateHubProxy。 - 不工作。
  • 将我的集线器类放入同一个项目,但使用不同的命名空间。 - 这很有用。

以下是传回的异常。 “System.Net.WebException:远程服务器返回错误:(500)内部服务器错误。    在System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)    在Microsoft.AspNet.SignalR.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)“

4 个答案:

答案 0 :(得分:8)

这对我有用(启动时)

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

map hubs in referenced project

的信用

答案 1 :(得分:0)

尝试查看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);
            }
        }

答案 2 :(得分:0)

您是否已将电话注册到新的dll?即以下内容需要在您的新项目中(但仍然从global.asax调用):

RouteTable.Routes.MapHubs();

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

答案 3 :(得分:0)

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