2016-05-18 38 views
1

我想在我的服务上使用SignalR和Nacyfx。所以我用Owin Selfhost试了一下。我运行了我的SignalR,我可以从我的Angular2客户端访问它,并且可以从SignalR访问我的客户端,因此SignalR可以看到一切正常。 但是当我试图访问/接收来自南希的数据我失败了。我无法通过我的客户访问我的南希。 我在不同于我的网站的端口上运行我的服务。在Owin Selfhost ||上使用SignalR和Nancyfx Angular2在客户端

计划:

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(); 
    } 
} 

枢纽,是这样的:

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 
      }; 
     }; 
    } 
} 

在客户方我tryed像这样的东西来访问南希:

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上遇到一些错误。 (网页目前在端口:3000上运行)

如果你需要更多的信息或更多的代码只是问,但我希望我得到了最重要的东西。

如果你们中的一些人可以帮助我解决这个问题,那将会很棒!

更新

当通过浏览器地址栏中访问南西南西是显示404错误(也表示南西tabicon)。所以在某种程度上它的工作,但我不能访问它的权利。

回答

1

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

我觉得痘痘有点愚蠢,因为出错,因为我的模块是不是Public 所以

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

解决它。