【发布时间】:2021-01-02 19:51:37
【问题描述】:
我在服务器端收到错误 5000,出现 Patterns.RoutePatternException 和消息:
Microsoft.AspNetCore.Routing.Patterns.RoutePatternException:路由模板中的参数不完整。检查每个'{' 字符有一个匹配的 '}' 字符。
我在服务器端收到以下异常;
09/15/2020 21:06:17 -05:00 错误发生未处理的异常 在执行请求时。 Microsoft.AspNetCore.Routing.Patterns.RoutePatternException:路由模板中的参数不完整。检查每个'{' 字符具有匹配的 '}' 字符。在 Microsoft.AspNetCore.Routing.Patterns.RoutePatternParser.Parse(字符串 模式)在 Microsoft.AspNetCore.Routing.Patterns.RoutePatternFactory.Parse(字符串 模式)在 Microsoft.AspNetCore.Mvc.Routing.ActionEndpointFactory.AddEndpoints(List
1 endpoints, HashSet1 routeNames, ActionDescriptor action, IReadOnlyList1 routes, IReadOnlyList1 约定,布尔值 createInertEndpoints) 在 Microsoft.AspNetCore.Mvc.Routing.ControllerActionEndpointDataSource.CreateEndpoints(IReadOnlyList1 actions, IReadOnlyList1 约定) 在 Microsoft.AspNetCore.Mvc.Routing.ActionEndpointDataSourceBase.UpdateEndpoints() 在 Microsoft.AspNetCore.Mvc.Routing.ActionEndpointDataSourceBase.Initialize()
这是我使用 Blazor/Core ASP 3.1 的第二个应用程序,我尝试复制第一个工作的应用程序。在客户端,代码到达 StartAsync()
Log.Warning("top of start service");
connection = new HubConnectionBuilder()
.WithUrl(url)
.Build();
Log.Warning("after connect in start service");
connection.Closed += async (error) =>
{
await Task.Delay(new Random().Next(0, 5) * 1000);
await connection.StartAsync();
};
connection.Reconnecting += error =>
{
Log.Error("Connection Lost attempting to reconnect: {@error}", error);
// Notify users the connection was lost and the client is reconnecting.
// Start queuing or dropping messages.
return Task.CompletedTask;
};
try
{
Log.Warning("before start async");
await connection.StartAsync();
Log.Warning("after start async");
程序.cs
var config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
Log.Logger = new LoggerConfiguration()
.ReadFrom.Configuration(config)
.CreateLogger();
try
{
CommandLine.Parser.Default.ParseArguments<Options>(args)
.WithParsed(RunOptions)
.WithNotParsed(HandleParseError);
BuildWebHost(args).Build().Run();
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
public static IHostBuilder BuildWebHost(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
_ = webBuilder.UseUrls("http://*:8080");
}).UseSerilog();
Startup.cs
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(o => o.AddPolicy("CorsPolicy", builder =>
{
builder
//.WithOrigins("http://localhost:44322")
.AllowAnyMethod()
.AllowAnyHeader()
.AllowAnyOrigin();
}));
services.AddSignalR();
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
//app.UseStatusCodePagesWithReExecute("/Error");
app.UseDeveloperExceptionPage();
}
else
{
app.UseStatusCodePagesWithReExecute("/Error");
//app.UseHsts();
}
app.UseCors("CorsPolicy");
app.UseDefaultFiles();
app.UseStaticFiles();
app.UseRouting();
//var hubConfiguration = new HubConfiguration();
app.UseEndpoints(endpoints =>
{
endpoints.MapHub<ShowsHub.BlazingShowsHub>("/shows");
endpoints.MapDefaultControllerRoute();
});
}
建议?
【问题讨论】:
-
您的路线模板一定有问题。请检查您的路线模板,例如
[Route("api/users/{userId/login")]缺少}。 -
这应该是一个答案,所以我可以投票并将其标记为已解决。我从来没有想过它在控制器中,因为我没有使用控制器。谢谢!
标签: asp.net-core asp.net-core-signalr blazor-webassembly