当我登录应用程序时,angular会将url更改为
在服务器端的日志中,我发现以下内容:Fail: Microsoft.AspNetCore.SignalR.HubConnectionContext[5] Failed connection handshake. 我在两台不同的服务器上运行angular客户端和.net core应用程序,并且CORS已正确设置,客户端应用程序能够连接到API。除了刷新angular路由页面外,该应用程序运行良好。
当我在开发机器上本地运行应用程序时,问题不会发生。我没有更改原始Abp Zero模板中的任何路由或signalr相关代码。 服务器端: .NetCore 2.2
Abp Zero v4.8
在startup.cs文件中调用services.AddSignalR()和app.UseSignalR(routes => {routes.MapHub("/signalr");});方法。这些都是标准的模板代码。 在Angular客户端中: @aspnet/signalr v1.1.4
未更改的SignalRAspNetCoreHelper,其中在app.component.ts文件的OnInit中调用initSignalR()方法。
https://baseurl/
app/home,主页能够正确地呈现。如果我刷新页面,就会出现服务器错误(500)。如果我在地址栏中删除“/app/home”并刷新,则页面可正常重新加载。在服务器端的日志中,我发现以下内容:Fail: Microsoft.AspNetCore.SignalR.HubConnectionContext[5] Failed connection handshake. 我在两台不同的服务器上运行angular客户端和.net core应用程序,并且CORS已正确设置,客户端应用程序能够连接到API。除了刷新angular路由页面外,该应用程序运行良好。
当我在开发机器上本地运行应用程序时,问题不会发生。我没有更改原始Abp Zero模板中的任何路由或signalr相关代码。 服务器端: .NetCore 2.2
Abp Zero v4.8
在startup.cs文件中调用services.AddSignalR()和app.UseSignalR(routes => {routes.MapHub("/signalr");});方法。这些都是标准的模板代码。 在Angular客户端中: @aspnet/signalr v1.1.4
未更改的SignalRAspNetCoreHelper,其中在app.component.ts文件的OnInit中调用initSignalR()方法。
import { AppConsts } from '@shared/AppConsts';
import { UtilsService } from '@abp/utils/utils.service';
export class SignalRAspNetCoreHelper {
static initSignalR(): void {
const encryptedAuthToken = new UtilsService().getCookieValue(AppConsts.authorization.encrptedAuthTokenName);
abp.signalr = {
autoConnect: true,
connect: undefined,
hubs: undefined,
qs: AppConsts.authorization.encrptedAuthTokenName + '=' + encodeURIComponent(encryptedAuthToken),
remoteServiceBaseUrl: AppConsts.remoteServiceBaseUrl,
startConnection: undefined,
url: '/signalr'
};
jQuery.getScript(AppConsts.appBaseUrl + '/assets/abp/abp.signalr-client.js');
}
}
app-routing.module.ts没有任何更改:
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
import { AppComponent } from './app.component';
import { AppRouteGuard } from '@shared/auth/auth-route-guard';
import { HomeComponent } from './home/home.component';
import { AboutComponent } from './about/about.component';
import { UsersComponent } from './users/users.component';
import { TenantsComponent } from './tenants/tenants.component';
import { RolesComponent } from 'app/roles/roles.component';
import { ChangePasswordComponent } from './users/change-password/change-password.component';
@NgModule({
imports: [
RouterModule.forChild([
{
path: '',
component: AppComponent,
children: [
{ path: 'home', component: HomeComponent, canActivate: [AppRouteGuard] },
{ path: 'users', component: UsersComponent, data: { permission: 'Pages.Users' }, canActivate: [AppRouteGuard] },
{ path: 'roles', component: RolesComponent, data: { permission: 'Pages.Roles' }, canActivate: [AppRouteGuard] },
{ path: 'tenants', component: TenantsComponent, data: { permission: 'Pages.Tenants' }, canActivate: [AppRouteGuard] },
{ path: 'about', component: AboutComponent },
{ path: 'update-password', component: ChangePasswordComponent }
]
}
])
],
exports: [RouterModule]
})
export class AppRoutingModule { }
root-routing.module.ts(未更改):
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{ path: '', redirectTo: '/app/home', pathMatch: 'full' },
{
path: 'account',
loadChildren: 'account/account.module#AccountModule', // Lazy load account module
data: { preload: true }
},
{
path: 'app',
loadChildren: 'app/app.module#AppModule', // Lazy load account module
data: { preload: true }
}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
providers: []
})
export class RootRoutingModule { }
有任何想法是出了什么问题吗?由于我没有更改任何内容,我想知道这个问题是否与环境或配置有关。