在Owin Selfhost上使用SignalR和Nancyfx || Clientside上的Angular2

时间:2016-05-18 12:16:36

标签: angular signalr owin nancy

我想在我的服务上使用SignalR和Nacyfx。所以我用Owin Selfhost试了一下。我的SignalR正在运行,我可以从Angular2客户端访问它,我可以从SignalR访问我的客户端,所以SignalR的一切似乎都没问题。 但是当我试图从Nancy访问/接收数据时,我失败了。我无法从我的客户端访问我的Nancy。 我在与我的网站不同的端口上运行我的服务。

程序:

class Program
{
    static void Main(string[] args)
    {
        string url = "http://+:2222";

        using (WebApp.Start<Startup>(url))
        {
            Console.WriteLine("SignalR Server running on {0}", url);
            Console.WriteLine();

            Console.ReadLine();
        }
    }
}

启动:

 class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR(new HubConfiguration() { EnableJSONP = true });
        app.UseNancy();
    }
}

Hub,就像这样:

public class MyHub : Hub
{
    private readonly static ConnectionMapper<string> _mappedConnections = new ConnectionMapper<string>();

    public override Task OnConnected()
    {
        var user= Context.QueryString["user"];
        _mappedConnections.Add(user, Context.ConnectionId);

        Console.WriteLine("User connected: " + user);
        Console.WriteLine();

        return base.OnConnected();
    }
}

所以我的SignalR正在使用此代码。

我的南希看起来像:

class NancyServiceModule : Nancy.NancyModule
{
    private DatabaseAccess _dbAccess = new DatabaseAccess();
    public NancyServiceModule() : base("/nancy/"){

        Get["/accessible"] = parameters =>
        {
            return new Response
            {
                StatusCode = HttpStatusCode.OK
            };
        };
    }
}

On Clientside我试图通过以下方式访问Nancy:

export class DatabaseService {

constructor(
    private _http: Http
    ) {}

 getMachines(): Observable<Response> {

    return this._http.get('http://localhost:2222/nancy/accessible');
    //also tryed Hardcoded IP instead of localhost
    }
}

我无法弄清楚我是否只是从我的客户端访问nacy错误,或者我在Serverside上遇到了一些错误。 (网页目前在Port:3000上运行)

如果您需要更多信息或更多代码,请询问,但我希望我能获得最重要的信息。

如果有些人可以帮我解决这个问题,那会很棒!

更新

当通过浏览器地址栏访问nancy时,nancy显示404错误(也显示nancy tabicon)。所以在某种程度上它的工作,但我无法正确访问它。

1 个答案:

答案 0 :(得分:2)

经过一整周的绝望,我解决了这个问题。

因为我的模块不是Public而发生错误,我觉得有点愚蠢 所以

public class NancyServiceModule : Nancy.NancyModule
{
....

解决了它。