加载集线器时出错。确保您的集线器引用正确,例如<script src =“/ signalr / js”> </script>

时间:2016-05-16 18:34:22

标签: c# asp.net angularjs signalr angularjs-routing

有两个页面:Login.aspx和Profile.aspx,它们是使用HTML和AngularJS构建的。

login.aspx页面使用ng-view获取Login-view或Signup View的模板。 使用的代码是:

<head>
    <title></title>
    <base href="/Login.aspx" />
    <link href="StyleSheet/Login_css.css" rel="stylesheet" />
    <script src="JscriptVendors/angular.min.js"></script>
</head>
<body ng-app="JouralApp_login">
    <div ng-view></div>

    <script src="Jscript_Angular/Model.js"></script>
    <script src="Jscript_Angular/Controllers/LoginPageController.js"></script>
    <script src="JscriptVendors/angular-route.min.js"></script>
    <script src="JscriptVendors/angular-animate.min.js"></script>
    <script src="JscriptVendors/jquery.min.js"></script>
</body>

视图存储在Template文件夹中,其名称为:loginTemplate.html和signupTemplate.html。

用于处理login.aspx页面的模块是:

var app_login = angular.module('JouralApp_login', ['ngRoute','ngAnimate']);
var app_profile = angular.module('GameApp', []);

app_login.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider
        .when('/login', {
            templateUrl: 'Jscript_Angular/Templates/loginTemplate.html',
            controller: 'loginController'
        })
        .when('/signup', {
            templateUrl: 'Jscript_Angular/Templates/signupTemplate.html'
        }).otherwise({
            redirectTo:'/login'
        })
}]);

现在创建了我的Profile.aspx,HTML代码为:

<head>
    <script src="Scripts/angular.js"></script>
</head>
<body ng-app="app_profile">    
    <div ng-controller="chatController">
        <div>
            <div ng-repeat="chat in messages">{{chat}}</div>
            <div>
                <input type="text ng-model="message" />
                <input type="button" ng-click="newMessage()" />
            </div>
        </div>
    </div>
    <script src="Jscript_Angular/Model.js"></script>
    <script src="Scripts/jquery-1.6.4.js"></script>
    <script src="Scripts/jquery.signalR-2.2.0.js"></script>
    <script src="signalr/hub"></script>
    <script src="Jscript_Angular/Controllers/ChatController.js"></script>
</body>

在尝试将SignalR集成到我的项目中之前,每件事情都工作正常。 我做了两节课:

CLASS 1:

[assembly: OwinStartup(typeof(Startup))]

public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        app.MapSignalR();
    }
}

CLASS 2:

public class ChatHub : Hub
{
    public void SendMessage(string name, string message)
    {
        Clients.All.broadcastMessage(name, message);
    }        
}

我还制作了以下控制器以访问我的javascript函数:

app_profile.controller('chatController',['$scope', function ($scope) {
    $scope.name = 'Guest';
    $scope.message = '';
    $scope.messages = [];
    $scope.chatHub = null;


    $scope.chatHub = $.connection.chatHub;
    $.connection.hub.start();

    $scope.chatHub.client.broadcastMessage = function (name, message) {
        var newMessage = name + "    " + message;

        $scope.messages.push(newMessage);
        $scope.$apply();
    };
    $scope.newMessage = function () {
        $scope.chatHub.server.sendMessage($scope.name, $scope.message);
        $scope.message = '';
    }
}]);

现在,当我尝试访问我的个人资料页面时,它会显示错误

angular.js:13550错误:SignalR:加载集线器时出错。确保您的集线器引用正确,例如

此外,当我尝试访问 localhost:5136 / signalr / hubs 时,重定向到我的登录页面,即: localhost:5136 / login

我认为问题是,它无法访问我创建的集线器,因为我使用angularJS为登录页面做了​​路由。

请帮我找到解决方案。

0 个答案:

没有答案