我需要在我的前端有一个Startup.cs吗?

时间:2015-09-24 06:23:17

标签: asp.net signalr cors

这个问题与此有关:

我遇到的问题是我正在尝试使用CORS从一个名为Frontend的ASP.NET(localhost:50000)项目实现一个SignalR到另一个ASP.NET MVC项目(在同一个解决方案中)(localhost:60000) )。

当我运行应用程序时,我在控制台中收到此错误消息:

  

尝试加载应用时发生以下错误。    - 找不到包含OwinStartupAttribute的程序集。    - 找不到包含Startup或[AssemblyName] .Startup类的程序集。要禁用OWIN启动发现,请添加appSetting   owin:您的web.config中值为“false”的AutomaticAppStartup。   要指定OWIN启动程序集,类或方法,请添加   appSetting owin:AppStartup与完全限定的启动类或   web.config中的配置方法名称。

当我添加OWIN Startup类时,我没有收到此错误消息:

  

HTTP错误404.0 - 未找到您正在寻找的资源   删除,更改名称或暂时不可用。

我想这是因为它试图在自己的项目中找到枢纽。

问题1: 我的前端是否需要启动?

问题2(如果问题1 ==是): 我必须在Startup中将SignalR映射到我的后端吗?

修改 的index.html:

<!--Script references -->
    <link href="Content/bootstrap.min.css" rel="stylesheet">
    <script src="Scripts/jquery-1.9.1.min.js"></script>
    <script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
    <script src="http://localhost:50000/signalr/hubs" type="text/javascript"></script>

<!-- HEAD ^^^ -->

<!-- Deleted stuff -->

<!-- BODY  vvv -->
<script type="text/javascript">
        $(function () {
            var broadcaster = $.connection.loginHub;
            console.log("broadcaster: " + broadcaster)

            $.connection.hub.start().done(function () {

            });

        });
    </script>

重新创建我的前端项目后,只安装Microsoft.AspNet.SignalR.JS包我知道在控制台中收到此错误:

  

HTTP错误404.0 - 未找到....请求的URL
  http://localhost:60000/signalr/negotiate?clientProtocol=1.5&connectionData=%5B%5D&_=1443076975867

http://localhost:60000是前端,所以我不确定为什么这是请求的网址。

检查http://localhost:50000/signalr/hubs时,我会从ASP.NET SignalR JavaScript Library v2.2.0获得一个网站,当我在控制台中打印broadcaster时,它会显示broadcaster: [object Object]所以似乎建立了某种联系

2 个答案:

答案 0 :(得分:3)

您可能需要将客户端设置为指向您的实际中心位置,因为默认情况下它是当前服务器。

$.connection.hub.url = '<yourbackendurl>;

在调用connection.hub.start之前执行此操作,它应该适合您。

答案 1 :(得分:1)

在您的Backend项目中,您需要安装这些软件包:

PM> Install-Package Microsoft.AspNet.SignalR
PM> Install-Package Microsoft.Owin.Cors

它的Startup类应该是这样的:

    public void Configuration(IAppBuilder app)
    {
        app.UseCors(CorsOptions.AllowAll);
        app.MapSignalR();
    }

在您的前端项目中,您需要安装此软件包:

PM> Install-Package Microsoft.AspNet.SignalR.JS

您也可以安装SignalR for .NET客户端:

PM> Install-Package Microsoft.AspNet.SignalR.Client