Ich versuche SignalR in Nancy in einer Konsole App zu starten.SignalR (mit selbst gehosteten Nancy) zeigt 404 für aushandeln? ClientProtocol = 1.3
Wenn mein Browser $.connection.hub.start()
tut es wird 404 - NotFound
für //localhost:667/negotiate?clientProtocol=1.3
---- 8 < ----
ich bin (versuchen) läuft Nancy an einem Port und SignalR auf einem anderen. Nancy arbeitet mit Razor. SignalR gibt das Hub-JavaScript in Ordnung zurück.
(Sorry für die Menge an Code unten, aber ich habe nicht in der Lage gewesen, es weiter zu reduzieren.)
(Diese Frage könnte von einer früher erkannt werden. - jetzt gelöscht Frage, die ich schlecht markiert worden)
Client-Code:
<script type="text/javascript" src='/Scripts/jquery-1.6.4.min.js'></script>
<script type="text/javascript" src="/Scripts/jquery.signalR-2.0.0-beta2.js"></script>
<script src="http://localhost:667/signalr/hubs" type="text/javascript"></script>
var chat;
$(function() {
$.connection.hub.url = '//localhost:667';
$.connection.hub.logging = true;
chat = $.connection.chat;
chat.client.addMessage = onAddMessage; // declared but not here
$.connection.hub.start()
.done(function() {
alert($.connection.id);
chat.server.send('Works!');
})
.fail(function (failreason) {
alert(failreason);
});
});
Code Server (in der Programmkonsole als Administrator ausgeführt wird)
class Program
{
static void Main(string[] args)
{
const string webUrl = "http://localhost:666";
const string signalrUrl = "http://localhost:667";
using (var webHost = new Nancy.Hosting.Self.NancyHost(
new Uri(webUrl)))
{
using (WebApp.Start<Startup>(signalrUrl))
{
webHost.Start();
Console.Write("Press any key");
Console.ReadKey();
webHost.Stop();
}
}
}
}
class Startup
{
public void Configuration(Owin.IAppBuilder app)
{
app.MapHubs(new HubConfiguration() { EnableCrossDomain = true });
app.UseNancy(new ApplicationBootstrapper());
}
}
public class ApplicationBootstrapper : DefaultNancyBootstrapper
{
protected override void ConfigureConventions(
Nancy.Conventions.NancyConventions nancyConventions)
{
nancyConventions.StaticContentsConventions.Add(
Nancy.Conventions.StaticContentConventionBuilder.AddDirectory(
"Scripts", @"/Scripts")
);
base.ConfigureConventions(nancyConventions);
}
}
public class Chat : Hub
{
public void Send(string message)
{
Clients.All.addMessage(message);
}
}
Vielen Dank für dieses Posting Code zurück zur Frage. Sehr klar und Beispiel. Ich hatte einen SignalR-Server und wollte einen Nancy POST-Handler hinzufügen, dies funktionierte zum ersten Mal. Zu Ihrer Information, ich musste Nancy.Owin Paket nur für jeden hinzufügen, der das gleiche tut. –