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 をデバッグするにはどうすればよいですか? また、どこに原因があるのでしょうか?