您的位置:首页 > 其它

.Net Core发布IIS服务器共用主站点域名

2020-05-28 18:01 92 查看

.NetCore发布IIS服务器共用主站点域名
如题,最近在研究ASP.NET迁移.NET Core收获良多,针对其中发布子站点共用主站点域名做个笔记。
首先,.NET Core要求程序连接池Application Pool是比较特殊如图:

此次.Net Core移植笔者共用到两个站点API和Client,需要新建两个Application Pool,供新建的两个子站点使用。
新建程序持如图:
step1:

step2:
两个程序池创建好以后,就可以分配给两个子站点,如图:
step1:

step2:

这样即可通过主站点域名访问子站点了。

补充说明
由于笔者的主站点是http协议的,但是发布过程中每次都会被重定向成https很是费解。后来终于了解到是由于创建项目时可选如图:

勾选此默认会把http重定向成https,让用户看起来好像是https协议的,就好比你访问了http://www.baidu.com会跳成https://www.baidu.com。
源码如图:

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
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();	//重定向https注释解君愁
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=QRCodeRecruitment}/{action=Index}/{id?}");
});
}

补充说明第二点
由于是子站点,那么带来的问题就是路径问题,Client层Ajax请求总会访问:

主站点域名/Controller/Action

那么为了解决此问题也是煞费苦心,最终决定引入环境变量,判断是本地Debug还是部署环境,由全局变量进行拼接Url,拼接成:

主站点域名/子站点名/Controller/Action

补充说明三
第一次发布时笔者是蒙蔽的,直接Error页,(是由于HttpClient那里请求API路径配置没改成API子站点路径)这里有一个小技巧,就是当代码框架没来得及写Log时,可以先调试API,返回一个固定字符串,比如.Net Core API 自带的WeatherForecastController就很好,如果这个能访问,就证明API通了,自己页面访问不到就排除掉HttpClient访问不到API了,另外就是排除补充说明一二的情况,应该没什么了。

至于.Net Core 发布IIS请看这篇博客,此博主写的很高大上,笔者就是参考这篇文章发布的。

觉得有帮助就点个赞吧,笔芯

仅供学习参考,如有侵权联系我删除

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: