2

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

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

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

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

这是被传回的异常。“System.Net.WebException:远程服务器返回错误:(500)内部服务器错误。在 Microsoft.AspNet.SignalR.Client.Http.HttpHelper 的 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)。<> c_DisplayClass2 .b _0(IAsyncResult ar) 在 System.Threading.Tasks.TaskFactory 1.FromAsyncCoreLogic(IAsyncResult iar, Func2 endFunction,Action 1 endAction, Task1 承诺,布尔要求同步)"

4

4 回答 4

8

这对我有用(在启动时)

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

引用项目中映射中心的学分

于 2014-02-06T08:02:57.480 回答
0

您是否已将呼叫转移到将集线器注册到新的 dll 中?即以下内容需要在您的新项目中(但仍从 global.asax 调用):

RouteTable.Routes.MapHubs();

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

于 2013-04-10T07:54:48.613 回答
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);
            }
        }
于 2013-04-10T01:50:35.480 回答
0

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

于 2015-05-14T01:14:57.070 回答