基于.NetCore框架的部署發(fā)布的配置定義主要有兩個部分的操作:1、配置IIS;2、通過VisualStudio把程序發(fā)布到指定文件夾中,下面將以通過.Net6框架開發(fā)的22-08-25-065_JsonTable(nopCommerce計(jì)劃任務(wù)(ScheduleTasks)的定義實(shí)現(xiàn))示例程序來詳細(xì)講述該程序是怎樣被發(fā)布部署到IIS中的。
1? 準(zhǔn)備工作
1.1 下載并安裝dotnet-hosting-6.0.9-win.exe
??? 先查看“AspNetCoreModuleV2”模塊是否已經(jīng)安裝到了IIS7中,如下圖所示:
??? 如果沒有在模塊中找到“AspNetCoreModuleV2”模塊,則在Download ASP.NET Core 6.0 Runtime (v6.0.9) - Windows Hosting Bundle Installer, 進(jìn)行下載。
1.2 下載并安裝aspnetcore-runtime-6.0.9-win-x64.exe
先通過CMD命令行:“dotnet --info”查看本機(jī)是否已經(jīng)安裝了“aspnetcore-runtime-6.0.9-win-x64.exe”因?yàn)樵诎惭bVisualStudio開發(fā)工具時會連帶“aspnetcore-runtime-6.0.8-win-x64.exe”一塊被安裝,如果已經(jīng)安裝執(zhí)行結(jié)果如下圖上所示:
注意:?
??? 因?yàn)楝F(xiàn)今的VisualStudio開發(fā)環(huán)境會經(jīng)常的被更新,如果需要上這些準(zhǔn)備工作都從Download .NET 6.0 (Linux, macOS, and Windows)中選擇最新版本的進(jìn)行下載并進(jìn)行安裝,以避免出現(xiàn)不必須的意外,如下圖所示:
2 IIS配置基于HTTP協(xié)議的網(wǎng)站
首先需要在“應(yīng)用程序池”中配置1個基于.Net(Core)6框架的專用應(yīng)用程序池,具體的配置信息如下圖所示:
3 通過ViusalStudio發(fā)布部署Web程序
3.1 發(fā)布部署配置
3.1.1 右擊“JsonTable”項(xiàng)目,選擇“發(fā)布”,如下圖所示:
3.1.2 在發(fā)布彈出框選擇“文件夾”,如下圖所示
3.1.3 點(diǎn)擊“下一步”后,文件夾位置必須選擇“D:\BaseHTTP” ,如下圖所示:
3.1.4 點(diǎn)擊“完成”后,點(diǎn)擊“更多操作”選擇“編輯” ,如下圖所示:
3.1.5 Entity Framework遷移錯誤 ,如下圖所示:
??? 如果在“編輯”過程中出現(xiàn)Entity Framework遷移錯誤,如下圖所示
解決方案是:在項(xiàng)目中通過Nuget單獨(dú)引用“Microsoft.EntityFrameworkCore.Design”,由于“JsonTable”已經(jīng)在通過Nuget引用“Microsoft.EntityFrameworkCore.Tools”時同時引用了“Microsoft.EntityFrameworkCore.Design”,所以不會出現(xiàn)上述錯誤,,如下圖所示:
3.1.6選擇“SQL Server身份認(rèn)證”和連接字符串對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,如下圖所示:
??? 注意:只能選擇“SQL Server身份認(rèn)證”和連接字符串對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,如果選擇“Windows憑據(jù)”和連接字符串對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,在IIS訪問已經(jīng)發(fā)布的網(wǎng)站時,頁面會出現(xiàn)“HTTP Error 500.30 - ASP.NET Core app failed to start”錯誤,如下圖所示:
3.1.6.1選擇“Windows憑據(jù)”定義
??? "ConnectionStrings": {
??????? //Trusted_Connection=true或Integrated Security=true/SSPI:“Windows憑據(jù)”對SQL Server進(jìn)行身份驗(yàn)證,表示可以在不知道數(shù)據(jù)庫用戶名和密碼的情況下時,依然可以連接SQL Server數(shù)據(jù)庫。
??????? //"integrated":"security=true是通過“Windows身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接;表示可以在不知道數(shù)據(jù)庫用戶名和密碼的情況下時,依然可以連接SQL Server數(shù)據(jù)庫,如果integrated", "security=false","或者不寫,表示一定要輸入正確的數(shù)據(jù)庫登錄名和密碼。": null。
??????? //Persist Security Info:該配置只用于通過“SQL Server身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接;簡單的理解為"ADO在數(shù)據(jù)庫連接成功后是否保存密碼信息",True表示保存,F(xiàn)alse表示不保存.ADO缺省為True(ADO.net缺省為False,未測試,根據(jù)參考資料上說的)。
??????? //MultipleActiveResultSets:它允許在單個連接上執(zhí)行多重的數(shù)據(jù)庫查詢或存儲過程,目前只適用于Sql Server 2005及其以上版本;如果不用MultipleActiveResultSets ,則一般報錯為sqldatareader未關(guān)閉,即需要關(guān)閉了之后才能打開另一個。
??????? //Trust Server Certificate:是否使用SSL證書和加密方式,對SQL Server數(shù)據(jù)庫的連接字符串進(jìn)行加密,該操作屬性安全性配置,目前只適用于Sql Server 2005及其以上版本;
??????? "SqlServerWindows": "Data Source=.;Initial Catalog=JsonTable;Integrated Security=true;MultipleActiveResultSets=true;Trust Server Certificate=True",
??????? //"SqlServerSQL": "Data Source=.;Initial Catalog=JsonTable;Integrated Security=False;Persist Security Info=False;User ID=zz;Password=zz;MultipleActiveResultSets=true;Trust Server Certificate=True"
??? },
//通過UseSqlServer依賴注入中間,通過“Windows身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接。
builder.Services.AddDbContext<EFCoreContext>
?? (options => options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerWindows")));
//通過UseSqlServer依賴注入中間,通過“SQL Server身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接,連接字符串中必須配置所連接數(shù)據(jù)庫的:用戶名、密碼。
//builder.Services.AddDbContext<EFCoreContext>
//??? (options => options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerSQL")));
3.1.6.2選擇“SQL Server身份認(rèn)證”定義
??? "ConnectionStrings": {
??????? //Trusted_Connection=true或Integrated Security=true/SSPI:“Windows憑據(jù)”對SQL Server進(jìn)行身份驗(yàn)證,表示可以在不知道數(shù)據(jù)庫用戶名和密碼的情況下時,依然可以連接SQL Server數(shù)據(jù)庫。
??????? //"integrated":"security=true是通過“Windows身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接;表示可以在不知道數(shù)據(jù)庫用戶名和密碼的情況下時,依然可以連接SQL Server數(shù)據(jù)庫,如果integrated", "security=false","或者不寫,表示一定要輸入正確的數(shù)據(jù)庫登錄名和密碼。": null。
??????? //Persist Security Info:該配置只用于通過“SQL Server身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接;簡單的理解為"ADO在數(shù)據(jù)庫連接成功后是否保存密碼信息",True表示保存,F(xiàn)alse表示不保存.ADO缺省為True(ADO.net缺省為False,未測試,根據(jù)參考資料上說的)。
??????? //MultipleActiveResultSets:它允許在單個連接上執(zhí)行多重的數(shù)據(jù)庫查詢或存儲過程,目前只適用于Sql Server 2005及其以上版本;如果不用MultipleActiveResultSets ,則一般報錯為sqldatareader未關(guān)閉,即需要關(guān)閉了之后才能打開另一個。
??????? //Trust Server Certificate:是否使用SSL證書和加密方式,對SQL Server數(shù)據(jù)庫的連接字符串進(jìn)行加密,該操作屬性安全性配置,目前只適用于Sql Server 2005及其以上版本;
??????? //"SqlServerWindows": "Data Source=.;Initial Catalog=JsonTable;Integrated Security=true;MultipleActiveResultSets=true;Trust Server Certificate=True",
??????? "SqlServerSQL": "Data Source=.;Initial Catalog=JsonTable;Integrated Security=False;Persist Security Info=False;User ID=zz;Password=zz;MultipleActiveResultSets=true;Trust Server Certificate=True"
??? },
//通過UseSqlServer依賴注入中間,通過“Windows身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接。
//builder.Services.AddDbContext<EFCoreContext>
//?? (options => options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerWindows")));
//通過UseSqlServer依賴注入中間,通過“SQL Server身份認(rèn)證”對SQL Server數(shù)據(jù)庫進(jìn)行身份驗(yàn)證,并與SQL Server數(shù)據(jù)庫進(jìn)行連接,連接字符串中必須配置所連接數(shù)據(jù)庫的:用戶名、密碼。
builder.Services.AddDbContext<EFCoreContext>
??? (options => options.UseSqlServer(builder.Configuration.GetConnectionString("SqlServerSQL")));
3.1.7點(diǎn)擊“保存”后,點(diǎn)擊“發(fā)布”,,如下圖所示:
4 通過IIS運(yùn)行BaseHTTP??
4.1 點(diǎn)擊“瀏覽*:8080(http)” ,如下圖所示:
.2 基于HTTP的運(yùn)行效果 ,如下圖所示:
5 通過IIS運(yùn)行BaseHTTPS
5.1 IIS配置基于HTPPS協(xié)議的網(wǎng)站
5.2 HTTP Error 500.35
??? 錯誤:點(diǎn)擊“瀏覽*:443(https)” 時會頁面會渲染“HTTP Error 500.35”,如下圖所示:
解決方案是:在IIS中停用“BaseHTTP”,如下圖所示
5.3 基于HTTPS的運(yùn)行效果 ,如下圖所示:
文章來源:http://www.zghlxwxcb.cn/news/detail-443634.html
?????? 對以上功能更為具體實(shí)現(xiàn)和注釋見:22-09-15-01_JsonTable(nopCommerce計(jì)劃任務(wù)(ScheduleTasks)IIS部署發(fā)布文章來源地址http://www.zghlxwxcb.cn/news/detail-443634.html
到了這里,關(guān)于第1章 基于.Net(Core)框架Web程序的IIS部署發(fā)布的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!