由于踏入 ASP.NET/C# 没很久,很多基本的东西都要靠自己去摸索,有时对别人来说是理所当然的东西,我可能会花上不少时间去研究。既然时间花了,就会想把过程记录下来,让像我一样的人可以省去点时间。
这次是在完成 QRCode 产生器的 API 后来,摸不着头绪要怎么把程式变成 IIS 可以吃的内容,虽然半年前做过一次,但脑袋早已空空,呵。
《建置与发布》
先将专案的「建置组态」改为 “雷亚塞”。以建置出适合部署于正式环境的结果。
(相对于 Realese,Debug 组态所建置出的结果,会包含除错资讯,适合用于开发和测试。)
在专案按右键,选择「建置」。
建置完成后,一样在专案按右键,选择「发布」。以准备供 Web 伺服器使用的档案结构。
由于我是以手动复制档案到 IIS 的形式来发布,所以发布的「目标」会选择「资料夹」。
最后再选择「发布」,便会在「目标路径」产生要复制到 IIS 的程式。
《IIS 布建》
在一般情形下,对「站台」按右键新增一个站台,并指向存有刚刚发布档案的资料夹即可。
但我这次是想在既有的站台下,新增一个子网站 (爸爸.abc.com.tw/儿子/) 的概念,因此要在既有站台按右键,选择「新增应用程式」,接着一样指向存有刚刚发布档案的资料夹即可。
「应用程式」这边我卡关许久,我本以为是要新增「虚拟目录」,但网站一直跑不起来,后来总算靠 ChatGPT 解围 (感恩满载)。「虚拟目录」会使用父层站台资源,比较适合放静态的图档、css 档等,如果拿来放 ASP 网站,可能会有一些比较麻烦的相对路径要处理。
「应用程式」则是等同一个独立的站台,资源都是独立的,只有域名部份是挂在父层底下而已 (爸爸.abc.com.tw/儿子/),所以我转换为应用程式后,网站就 work 了,程式根本不用针对相对路径的状况去做调整。
此外,如果是用 ASP.NET Core 开发,由于 ASP.NET Core 不直接依赖 IIS 中的 .NET CLR (公共语言运行时),而是使用自己的 Kestrel 伺服器处理请求,然后透过 IIS 作为反向代理,因此,针对 ASP.NET Core,通常会将应用程式集区设为「没有受控码」,不启动 .NET CLR,可节省资源。