【问题标题】:Do I need to have a Startup.cs on my Frontend?我需要在我的前端有一个 Startup.cs 吗?
【发布时间】:2015-09-24 15:12:46
【问题描述】:

这个问题与此有关:

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

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

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

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

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 是前端,所以我不确定为什么这是请求的 URL。

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

【问题讨论】:

  • 您在哪些项目中使用 SignalR?
  • @SirwanAfifi 我通过 nuget 在两个项目中安装了 SignalR Install-Package Microsoft.AspNet.SignalR

标签: asp.net signalr cors


【解决方案1】:

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

$.connection.hub.url = '&lt;yourbackendurl&gt;;

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

【讨论】:

    【解决方案2】:

    在您的后端项目中,您需要安装这些包:

    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
    

    您还可以为 .NET 客户端安装 SignalR:

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

    【讨论】:

    • 我安装了 SignalR.JS 但它没有工作,之后我安装了SignalR.Client 没有成功。这是控制台中的错误消息:Failed to load resource: the server responded with a status of 404 (Not Found)。我用更多信息编辑了我的帖子。
    猜你喜欢
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2020-11-03
    • 1970-01-01
    • 2019-02-02
    相关资源
    最近更新 更多