Deploy ASP.NET Core บน IIS

เซ็ตอัพเซิร์ฟเวอร์

  1. ติดตั้ง .NET Core
  2. ติดตั้ง .NET Core Windows Server Hosting
  3. Restart IIS
> net stop was /y
> net start w3svc

4. เพิ่มไซต์ชื่อว่า “Project”

เซ็ตอัพโปรเจค

ไฟล์ web.config ต้องเซ็ต processPath ให้ชี่ไปที่ชื่อ main dll ที่ได้จากการ build

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\Project.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>

ใน entry point ให้ build WebHost ด้วย .UseIISIntegration()

let host = WebHostBuilder()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build()
host.Run()

Deploy ด้วย msdeploy.exe

  1. build / publish โปรเจคไปที่โฟลเดอร์ Publish
> dotnet build Project/Project.fsproj
> dotnet publish Project/Project.fsproj --output Publish

2. deploy โฟลเดอร์ Publish ที่ได้ในข้อ 1 โดยใช้ msdeploy.exe

Deploy ด้วยสคริป cake

  1. เพิ่มทาสต์ Deploy-IIS ในไฟล์ build.cake ดังนี้
#addin "Cake.WebDeploy"
Task("Deploy-IIS")
.Does(() => {
var settings = new DeploySettings() {
SourcePath = "Publish"
PublishUrl = "https://<IP>:8172/msdeploy.axd"
SiteName = "Project"
Username = "<User>"
Password = "<Password>"
};
DeployWebsite(settings);
});

2. สั่ง deploy ผ่าน command line (บน Windows)

> powershell -ExecutionPolicy ByPass -File build.ps1 -target "Deploy-IIS"
One clap, two clap, three clap, forty?

By clapping more or less, you can signal to us which stories really stand out.