【发布时间】:2021-10-02 14:29:07
【问题描述】:
当我尝试使用 url /Home 或 / 访问 /Pages/Home 目录下的 index.cshtml 页面时Home/index 内部重定向总是发生在 /Pages 目录下的 index.cshtml 页面上。
如果我使用 URL /Home/Home 的另一种情况,我可以成功访问 /Pages/Home 下的 index.cshtml 页面,并且不会发生重定向。
这是项目结构
启动类配置
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
app.UseMiddleware<ErrorHandlerMiddleware>();
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
app.UseHttpsRedirection();
}
app.UseFileServer();
app.UseSession();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseRequestLocalization();
app.UseEndpoints(endpoints =>
{
endpoints.MapRazorPages().RequireAuthorization();
});
}
配置服务
public void ConfigureServices(IServiceCollection services)
{
services.AddAntiforgery(o => o.HeaderName = xHeaderName);
services.AddDataReposiotry();
services.AddBackOfficeServices();
services.AddDbContext<DigitalServiceContext>(options => options.UseSqlServer(Configuration.GetConnectionString(ConnectionString)));
services.ConfigureApplicationCookie(options =>
{
options.LoginPath = xLoginPath;
options.Cookie.HttpOnly = true;
options.Cookie.IsEssential = true;
options.ExpireTimeSpan = TimeSpan.FromHours(1);
});
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
});
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme).AddCookie(cookieOptions =>
{
cookieOptions.LoginPath = xLoginPath;
cookieOptions.Cookie.Name = "DSINTRANET";
cookieOptions.Cookie.IsEssential = true;
});
services.AddHttpClient();
//services.AddLocalization(options => options.ResourcesPath = "Resources");
services
.AddMvc()
.AddViewLocalization()
.AddDataAnnotationsLocalization(options =>
{
options.DataAnnotationLocalizerProvider = (type, factory) =>
{
var assemblyName = new AssemblyName(typeof(CommonResources).GetTypeInfo().Assembly.FullName);
return factory.Create(nameof(CommonResources), assemblyName.Name);
};
});
var cultures = new CultureInfo[]
{
new CultureInfo("en"),
new CultureInfo("ar"),
};
services.AddRazorPages(options =>
{
options.RootDirectory = "/Pages";
options.Conventions.AddFolderApplicationModelConvention(
"/Workflow",
model => model.Filters.Add(new VerfiySessionDataAttribute(Configuration)));
options.Conventions.AddFolderApplicationModelConvention(
"/Home",
model => model.Filters.Add(new VerfiySessionDataAttribute(Configuration)));
options.Conventions.AddFolderApplicationModelConvention(
"/Dashboard",
model => model.Filters.Add(new VerfiySessionDataAttribute(Configuration)));
})
.AddExpressLocalization<CommonResources>(ops =>
{
ops.ResourcesPath = "Resources";
ops.RequestLocalizationOptions = o =>
{
o.SupportedCultures = cultures;
o.SupportedUICultures = cultures;
o.DefaultRequestCulture = new RequestCulture("en");
};
});
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(double.Parse(Configuration["Session:IdleTimeout"]));
});
services.AddMemoryCache();
services.Configure<FormOptions>(x => x.MultipartBodyLengthLimit = 5368709120);
AddMapperProfile(services, Configuration);
}
知道这里可能是什么问题吗?
【问题讨论】:
-
请不要截图代码 --> idownvotedbecau.se/imageofcode
-
@gsharp 代码编辑删除了屏幕截图
标签: c# visual-studio asp.net-core razor-pages