SignalR hub无法调用客户端:Microsoft.AspNet.SignalR.Tests.Server.Hubs.TypedClient没有实现

时间:2015-01-14 17:29:18

标签: c# signalr signalr-hub

我有一个像这样的简单SignalR集线器类:

public class FooHub : Hub<IBar>
{
    public async Task Hello(string text)
    {
        await this.Clients.Caller.SaySomething (text);
    }
}

基本上,当客户端在服务器上调用Hello时,这将回调到客户端的SaySomething函数,该函数在接口IBar上声明:

public interface IBar
{
    Task OrderBeverage();
    Task SaySomething(string text);
}

这与SignalR的魔力一起工作正常。基本上,上面的Caller属性返回动态生成的代理的实例,该代理实现IBar

但是,如果我通过应用Interface Segregation Principle重写IBar,就像这样:

public interface IBar : IOrder, ISmallTalk
{
}

public interface IOrder
{
    Task OrderBeverage();
}

public interface ISmallTalk
{
    Task SaySomething(string text);
}

应该在功能上完全相同,我在尝试调用Caller返回的IBar代理时遇到崩溃,但有以下异常:

  

类型&#39; System.TypeLoadException&#39;的第一次机会异常。发生在mscorlib.dll

     

其他信息:方法&#39; SaySometing&#39;在类型&#39; IBar&#39;从装配   &#39; Microsoft.AspNet.SignalR.Tests.Server.Hubs.TypedClient,Version = 0.0.0.0,   Culture = neutral,PublicKeyToken = null&#39;没有实施。

我花了很长时间才弄清楚我必须直接将所有方法都放入IBar,以便SignalR的Hub<T>实现正常工作。

这是设计的吗?我错过了什么吗?

0 个答案:

没有答案