C# 从.NET Core 1更新到.NET Core 2时app.UseMvc路由异常
我正在将我的项目从.NET Core 1升级到.NET Core 2C# 从.NET Core 1更新到.NET Core 2时app.UseMvc路由异常,c#,asp.net-core,asp.net-core-2.0,asp.net-core-1.0,C#,Asp.net Core,Asp.net Core 2.0,Asp.net Core 1.0,我正在将我的项目从.NET Core 1升级到.NET Core 2 <PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" /> <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" /> <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.Vi
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
遵循官方文档--我编辑了csproj以包含以下包
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
并将Startup类更改为此
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
// Load Configuration from appsettings.json
services.Configure<IdentityServerSettings>(Configuration.GetSection("IdentityServerSettings"));
services.AddOptions();
var identityServerOptions = serviceProvider.GetService<IOptions<IdentityServerSettings>>().Value;
services.AddMvc(o =>
{
if (identityServerOptions.EnableSSL)
o.Filters.Add(new RequireHttpsAttribute());
});
services.AddAuthentication("Bearer").AddIdentityServerAuthentication(opt =>
{
opt.Authority = identityServerOptions.Authority;
opt.RequireHttpsMetadata = identityServerOptions.EnableSSL;
opt.ApiName = identityServerOptions.ApiName;
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
#region Identity Server Config
// Setup Identity Server Options for this API -
app.UseAuthentication();
#endregion
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseBrowserLink();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
// tried this
app.UseMvc();
// and this
//app.UseMvcWithDefaultRoute();
// and this
//app.UseMvc(routes =>
//{
// routes.MapRoute(name: "default", template: "{controller=Home}/{action=Index}/{id?}");
//});
}
但每当我运行项目时,我都会得到一个异常:“序列包含多个匹配元素”
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
好的,这与.NET核心升级无关。但这是我如何设置Fluent验证的问题
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
在升级期间,我还将FluentValidation.AspNetCore
从7.2.1升级到7.5.*。这导致了异常
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
降级至7.2.1后,解决方案运行良好
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
当我找到一个解决方案让它与
FluentValidation.AspNetCore
v7.5一起工作时,我会发布更多关于这个问题的信息。我按照文档进行了升级,从AspNetCore 1
升级到AspNetCore。所有的v2.0.7也都升级了(我知道v2.0.8刚刚推出,但Azure还不支持,所以我还在坚持升级)。我使用FluentValidation
v7.5.2编译时没有问题
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
只是想和大家分享我是怎么做到的
<PackageReference Include="Microsoft.AspNetCore" Version="2.0.2" />
<PackageReference Include="Microsoft.AspNetCore.Mvc" Version="2.0.3" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.ViewCompilation" Version="2.0.3" PrivateAssets="All" />
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.2" />
<PackageReference Include="Microsoft.VisualStudio.Web.BrowserLink" Version="2.0.2" />
<PackageReference Include="Microsoft.SqlServer.Types" Version="11.0.2" />
<PackageReference Include="FluentValidation.AspNetCore" Version="7.5.2" />
创建一个扩展方法