5

JSファイルを含む通常のハブをセットアップすることにより、従来の方法でMVC4プロジェクトでSignalrを正常に使用しましたが、/signalr/hubs動作します。

今、ユニティでDIをセットアップしようとしています:

Global.asax

UnityContainer = Bootstrapper.Initialise();
var unityDependencyResolver = new UnityDependencyResolver(UnityContainer);

// Used for MVC
DependencyResolver.SetResolver(unityDependencyResolver);

// Used for SignalR
GlobalHost.DependencyResolver = new SignalRUnityDependencyResolver(UnityContainer);

RouteTable.Routes.MapHubs();

Bootstrapper.cs

public static IUnityContainer Initialise()
{
    var unityContainer = new UnityContainer();

    unityContainer.RegisterType<IUsers, Users>();

    unityContainer.RegisterType<ChatHub>(new InjectionFactory(CreateMyHub));

    return unityContainer;
}

private static object CreateMyHub(IUnityContainer p)
{
    return new ChatHub(p.Resolve<IUsers>());
}

そしてハブ: public class UserHub : Hub { private readonly IUsers _users;

public ChatHub(IUsers users)
{
    _users = users;
}

public void Send(String message)
{
    Clients.All.addMessage(message);
}

}

マイ SignalRUnityDependencyResolver.cs

public class SignalRUnityDependencyResolver : DefaultDependencyResolver
{
    private readonly IUnityContainer _container;

    public SignalRUnityDependencyResolver(IUnityContainer container)
    {
        if (container == null)
        {
            throw new ArgumentNullException("container", "Containet cannot be null");
        }
        _container = container;
    }

    public override Object GetService(Type serviceType)
    {
        return _container.IsRegistered(serviceType) ? _container.Resolve(serviceType) : base.GetService(serviceType);
    }

    public override IEnumerable<Object> GetServices(Type serviceType)
    {
        return _container.IsRegistered(serviceType) ? _container.ResolveAll(serviceType) : base.GetServices(serviceType);
    }
}

すべての依存関係が解決されるため、これは非ハブで機能しますが、javascript ファイル<script src="~/signalr/hubs"></script>は生成されなくなりました。

この世代の JS をデバッグするにはどうすればよいですか? また、どこに原因があるのでしょうか?

4

1 に答える 1

0

これを config EnableJavaScriptProxies = false で使用できます

このようなコード:

        app.Map("/signalr", map =>
        {
            map.UseCors(CorsOptions.AllowAll);
            var hubConfiguration = new HubConfiguration
            {
                EnableJSONP = true,

                EnableJavaScriptProxies = false
            };

            map.RunSignalR(hubConfiguration);
        });
于 2015-12-12T01:47:43.500 に答える