日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > asp.net >内容正文

asp.net

Orchard Core Framework:ASP.NET Core 模块化,多租户框架

發(fā)布時(shí)間:2023/12/4 asp.net 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Orchard Core Framework:ASP.NET Core 模块化,多租户框架 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

上一篇編寫Orchard Core一分鐘搭建ASP.NET Core CMS?,介紹ASP.NET Core CMS?,Orchard的ASP.NET Core版,同時(shí)對(duì)應(yīng)有一個(gè)ASP.NET Core框架。

支持模塊化和多租戶。整個(gè)Orchard Core就是通過一個(gè)個(gè)模塊Module組成的

首先創(chuàng)建一個(gè)空的?ASP.NET Core Web應(yīng)用程序?yàn)榛A(chǔ)。下面學(xué)習(xí)模塊的建立及使用。


模塊化


首先在之前創(chuàng)建好的ASP.NET Core Web應(yīng)用程序中,新建一個(gè) 類庫(kù)(.NET Core)項(xiàng)目 為ModuleWeb。

然后添加 Microsoft.AspNetCore.Mvc 及 OrchardCore.Module.Targets 引用。

命令如下:

Install-Package?Microsoft.AspNetCore.Mvc

Install-Package OrchardCore.Module.Targets -Pre

?

?接著我們就可以添加一個(gè)Views 文件夾和 Controllers 文件夾,以及添加一個(gè)HomeController和對(duì)應(yīng)的視圖頁(yè)。

由于類庫(kù)上沒有很好的新建快捷方式,建議從ASP.NET Core Web 項(xiàng)目中復(fù)制。

public class HomeController : Controller

? ? {

? ? ? ? public IActionResult Index()

? ? ? ? {

? ? ? ? ? ? return View();

? ? ? ? }

? ? }

Home/Index.cshtml

<h1>Hello from ModuleWeb /Home/Index</h1> <h2>LineZero</h2>

Module 創(chuàng)建好了,接下來在ASP.NET Core Web 項(xiàng)目中引用。

首先需要在Web 項(xiàng)目添加一個(gè)OrchardCore.Application.Mvc.Targets 包

Install-Package?OrchardCore.Application.Mvc.Targets -Pre

接著將ModuleWeb 項(xiàng)目引用進(jìn)來。

更改Startup.cs 如下:

public class Startup

? ? {

? ? ? ? public void ConfigureServices(IServiceCollection services)

? ? ? ? {

? ? ? ? ? ? services.AddModules();

? ? ? ? }


? ? ? ? public void Configure(IApplicationBuilder app, IHostingEnvironment env)

? ? ? ? {

? ? ? ? ? ? if (env.IsDevelopment())

? ? ? ? ? ? {

? ? ? ? ? ? ? ? app.UseDeveloperExceptionPage();

? ? ? ? ? ? }


? ? ? ? ? ? app.UseModules();

? ? ? ? }

? ? }

注意項(xiàng)目中引用為?Microsoft.AspNetCore 以及Microsoft.ApplicationInsights.AspNetCore,配置如下

<ItemGroup>

? ? <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />

? ? <PackageReference Include="Microsoft.AspNetCore" Version="2.0.0" />

? ? <PackageReference Include="OrchardCore.Application.Mvc.Targets" Version="1.0.0-beta1-3667" />

? </ItemGroup>


? <ItemGroup>

? ? <ProjectReference Include="..\ModuleWeb\ModuleWeb.csproj" />

? </ItemGroup>

接著運(yùn)行程序,輸入 ModuleWeb/Home/index 如下

ModuleWeb 也就是正常可用。

多租戶

多租戶,可以直接根據(jù)配置讀取用戶設(shè)置,實(shí)現(xiàn)多域名或者多目錄。

先來添加一個(gè)ModuleInfo ,添加引用:

Install-Package OrchardCore.Module.Targets -Pre

Install-Package OrchardCore.Environment.Shell.Abstractions -Pre

接著添加一個(gè)Startup.cs,實(shí)現(xiàn)如下:

public class Startup : StartupBase

? ? {

? ? ? ? // This method gets called by the runtime. Use this method to add services to the container.

? ? ? ? // For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940

? ? ? ? public override void ConfigureServices(IServiceCollection services)

? ? ? ? {

? ? ? ? }


? ? ? ? // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

? ? ? ? public override void Configure(IApplicationBuilder app, IRouteBuilder routes, IServiceProvider serviceProvider)

? ? ? ? {

? ? ? ? ? ? app.Map("/hello", branch =>?

? ? ? ? ? ? ? ? branch.Run(context => context.Response.WriteAsync("Hello World From ModuleInfo LineZero"))

? ? ? ? ? ? );



? ? ? ? ? ? app.Map("/info", branch =>

? ? ? ? ? ? {

? ? ? ? ? ? ? ? branch.Run(context =>

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? var shellSettings = context.RequestServices.GetRequiredService<ShellSettings>();

? ? ? ? ? ? ? ? ? ? return context.Response.WriteAsync($"Request from tenant: {shellSettings.Name}");

? ? ? ? ? ? ? ? });

? ? ? ? ? ? });

? ? ? ? }

? ? }

?訪問/info 會(huì)讀取shellsetting 獲取用戶的配置。

在ASP.NET Core Web應(yīng)用程序 中添加一個(gè)tenants.json 如下:

{

? "Web": {

? ? "State": "Running",

? ? // "RequestUrlHost": "web.com",

? ? "RequestUrlPrefix": "web",

? ? "Features": [ "ModuleWeb", "ModuleInfo", "OrchardCore.Mvc" ],

? ? "MyConnectionString": "connectionstring1"

? },

? "Info": {

? ? "State": "Running",

? ? // "RequestUrlHost": "info.com, info.org",

? ? "RequestUrlPrefix": "info",

? ? "Features": [ "ModuleInfo", "OrchardCore.Mvc" ],

? ? "MyConnectionString": "connectionstring2"

? }

}

并更改Startup.cs

public void ConfigureServices(IServiceCollection services){services.AddModules(c=>c.WithTenants());}

接著將ModuleInfo 添加到Web應(yīng)用程序,運(yùn)行應(yīng)用程序。

訪問/web/info ,如下會(huì)輸出Web

訪問/info/info ,如下會(huì)輸出Info

然后Web 配置下才會(huì)有兩個(gè)模塊,Info 配置下只有一個(gè)模塊。可以根據(jù)這些信息來做用戶隔離和區(qū)分。

對(duì)于Orchard Core Framework 更深入的了解,可以查看GitHub 上的源碼:https://github.com/OrchardCMS/OrchardCore?


原文地址:https://www.cnblogs.com/linezero/p/8093234.html


.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com

總結(jié)

以上是生活随笔為你收集整理的Orchard Core Framework:ASP.NET Core 模块化,多租户框架的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。