asp.net Core3.0區(qū)域與路由配置的方法
在ASP.NET Core 3.0中路由配置和2.0不一樣了
一、MVC 服務(wù)注冊(cè)
ASP.NET Core 3.0 添加了用于注冊(cè)內(nèi)部的 MVC 方案的新選項(xiàng)Startup.ConfigureServices。
三個(gè)新的頂級(jí)擴(kuò)展方法與 MVC 方案上IServiceCollection可用。 模板使用這些新方法,而不是UseMvc。 但是,AddMvc繼續(xù)像它已在以前的版本。
下面的示例將添加對(duì)控制器和與 API 相關(guān)的功能,但不是視圖或頁(yè)面的支持。 API 模板使用此代碼:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
}
下面的示例將添加對(duì)控制器、 與 API 相關(guān)的功能,和視圖,但不是頁(yè)面的支持。 Web 應(yīng)用程序 (MVC) 模板使用此代碼:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
}
下面的示例添加支持 Razor 頁(yè)面和最小控制器支持。 Web 應(yīng)用程序模板使用此代碼:
public void ConfigureServices(IServiceCollection services)
{
services.AddRazorPages();
}
此外可以組合的新方法。 下面的示例是等效于調(diào)用AddMvcASP.NET Core 2.2 中:
public void ConfigureServices(IServiceCollection services)
{
services.AddControllers();
services.AddRazorPages();
}
二、Startup.Configure配置
一般不建議:
添加UseRouting。
如果該應(yīng)用程序調(diào)用UseStaticFiles,將置于UseStaticFiles之前 UseRouting。
如果應(yīng)用使用身份驗(yàn)證/授權(quán)功能,如AuthorizePage或[Authorize],將對(duì)UseAuthentication并UseAuthorization后 UseRouting。
如果應(yīng)用使用CORS功能,如[EnableCors],將放置UseCors下一步。
替換UseMvc或UseSignalR與UseEndpoints。
以下是一種Startup.Configure典型的 ASP.NET Core 2.2 應(yīng)用中:
public void Configure(IApplicationBuilder app)
{
...
app.UseStaticFiles();
app.UseAuthentication();
app.UseSignalR(hubs =>
{
hubs.MapHub<ChatHub>("/chat");
});
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}/{id?}");
});
}
現(xiàn)在的控制器映射內(nèi)發(fā)生UseEndpoints。
添加MapControllers如果應(yīng)用使用屬性路由。 由于路由包括對(duì)許多框架在 ASP.NET Core 3.0 或更高版本的支持,添加屬性路由的控制器是參加。
將為以下內(nèi)容:
MapRoute 使用 MapControllerRoute
MapAreaRoute 使用 MapAreaControllerRoute
由于路由現(xiàn)在包括對(duì)不止是 MVC 的支持,已更改了術(shù)語(yǔ)進(jìn)行明確說(shuō)明他們所做的這些方法。 如傳統(tǒng)路由MapControllerRoute / MapAreaControllerRoute / MapDefaultControllerRoute它們要添加的順序應(yīng)用。 將第一位更具體的路由 (如某一區(qū)域的路由)。
如下示例中:
- MapControllers 添加了對(duì)屬性路由的控制器支持。
- MapAreaControllerRoute 將控制器的傳統(tǒng)路由添加區(qū)域。
- MapControllerRoute 添加控制器的常規(guī)路由。
現(xiàn)在映射 Razor 頁(yè)面內(nèi)發(fā)生UseEndpoints。
添加MapRazorPages如果應(yīng)用使用 Razor 頁(yè)面。 由于終結(jié)點(diǎn)路由包括對(duì)許多框架的支持添加 Razor 頁(yè)面現(xiàn)在參加。
更新后asp.netCore3.0中Startup.Configure代碼:
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/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.UseStaticFiles();
app.UseCookiePolicy();
app.UseRouting();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapAreaControllerRoute(
name: "areas", "areas",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
如果要進(jìn)行分區(qū)路由,需要在控制器Controller頭加Area和Route標(biāo)簽,否則不能像在asp.netCore2.0中自動(dòng)路由控制器和Action。示例代碼如下:
namespace WebApplication1.Areas.CMS.Controllers
{
[Area("CMS")]
[Route("CMS/[controller]/[action]")]
public class NewsController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult List()
{
return View();
}
}
}
這兩句一定要加[Area("CMS")]、[Route("CMS/[controller]/[action]")]
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
asp.net UrlReWriter使用經(jīng)驗(yàn)小結(jié)
UrlRewriter 是微軟封裝好了的一個(gè)URL重寫組件。使用它可以讓我節(jié)約很多自已開發(fā)的時(shí)間。 好了,開始講述我的應(yīng)用經(jīng)驗(yàn),這只是很菜鳥的經(jīng)驗(yàn),高手就不用看了。2008-11-11
ASP.NET MVC5+EF6+EasyUI 后臺(tái)管理系統(tǒng)(81)-數(shù)據(jù)篩選(萬(wàn)能查詢)實(shí)例
本篇文章主要介紹了ASP.NET MVC5+EF6+EasyUI 后臺(tái)管理系統(tǒng)(81)-數(shù)據(jù)篩選(萬(wàn)能查詢) ,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12
ASP.NET創(chuàng)建動(dòng)態(tài)縮略圖的方法
這篇文章主要介紹了ASP.NET創(chuàng)建動(dòng)態(tài)縮略圖的方法,實(shí)例分析了asp.net動(dòng)態(tài)操作圖片的相關(guān)技巧,需要的朋友可以參考下2015-06-06
使用FreeHost SQL2000網(wǎng)頁(yè)管理器出錯(cuò)解決辦法
在您登陸FreeHost SQL2000網(wǎng)頁(yè)管理器時(shí),如果提示以下信息: 發(fā)生類型為 System.Web.HttpUnhandledException 的異常2012-01-01
asp.net點(diǎn)擊 查看更多 實(shí)現(xiàn)無(wú)刷新加載的實(shí)現(xiàn)代碼
asp.net點(diǎn)擊 查看更多 實(shí)現(xiàn)無(wú)刷新加載的實(shí)現(xiàn)代碼,需要的朋友可以參考下2012-06-06
詳解ASP.NET?Core高性能服務(wù)器HTTP.SYS
HTTP.SYS本質(zhì)上就是一個(gè)HTTP/HTTPS監(jiān)聽器,它是Windows網(wǎng)絡(luò)子系統(tǒng)的一部分,是一個(gè)在內(nèi)核模式下運(yùn)行的網(wǎng)絡(luò)驅(qū)動(dòng),今天通過(guò)本文給大家介紹下ASP.NET?Core高性能服務(wù)器HTTP.SYS,感興趣的朋友一起看看吧2022-04-04
asp.net開發(fā)與web標(biāo)準(zhǔn)的沖突問(wèn)題的一些常見(jiàn)解決方法
Visual Studio .net從2003到現(xiàn)在的2008,一路走來(lái)慢慢強(qiáng)大……從以前的vs2003能自動(dòng)改亂你的html代碼到現(xiàn)在在vs2008中都能直接對(duì)html代碼進(jìn)行w3c標(biāo)準(zhǔn)驗(yàn)證并提示了,非常不易。2009-02-02

