wasm:: blazor wasm을 localhost에서 실행하기

 

 

blazor wasm을 빌드해서 만든 폴더에서는 실행파일이 보이지 않고 release를 통해 wwwroot 폴더에서 index.html파일을 실행하면 아무런 반응이 없다.

그런데 예제들 처럼 dotnet run (or dotnet run watch)로 blazor wasm을 실행해 보면 잘 된다.

 

그럼, 내 PC에서도 web page처럼 실행하려면 어떻게 해야 할까?

 

 

dotnet run 으로 테스트하면 아래처럼 페이지가 잘 보인다
port 5057을 통해 실행하고 있다

 

 

 

 

 

 

blazor wasm을 github page에 deploy 하기

WASM은 static web이라서 github >> github page를 통해서 별도 server 구입없이 실행, hosting 할 수가 있다.

다음 예제들이 찾은 괜찮은 , 그리고 실행가능한 예제들이다.

 

 

https://www.peug.net/en/how-to-deploy-a-blazor-webassembly-app-on-github-pages/

 

How to deploy a Blazor Webassembly app on Github Pages - Blog of Christophe Peugnet

Small tutorial to create your CI/CD worklfow of a SPA application (here Blazor WebAssembly) on Github Pages

www.peug.net

 

**동영상도 있고 해서 따라하기 좋음

https://swimburger.net/blog/dotnet/how-to-deploy-aspnet-blazor-webassembly-to-github-pages

 

How to deploy ASP.NET Blazor WebAssembly to GitHub Pages

With ASP.NET Blazor WebAssembly you can create .NET applications that run completely inside of the browser. The output of a Blazor WASM project are all static files. You can deploy these applications to various static site hosts like GitHub Pages.

swimburger.net

 

https://dev.to/madhust/how-to-publish-blazor-webassembly-application-to-github-pages-using-github-action-54h4

 

How to publish Blazor WebAssembly application to GitHub pages using GitHub Action

In this post, I am going to show how to add a GitHub Action to your repository that would auto-publis...

dev.to

 

 

** github SAMPLE이 포함됨

Publish blazor wasm .net 7 to github pages with Visual Studio 2022 - Stack Overflow

 

Publish blazor wasm .net 7 to github pages with Visual Studio 2022

Anyone Published blazor web assembly .net 7 with Visual Studio 2022 to github pages? Please get a video link or write the steps. Yes I did it: Video : https://youtu.be/C4fVwppE1ZM Needed codes: i...

stackoverflow.com

 

 

 

 

https://www.youtube.com/watch?v=C4fVwppE1ZM 

 

 

 

 

https://vip00112.tistory.com/76

 

C#: Blazor IIS 배포 후 Route 이슈

Blazor는 SPA에서의 url로 인한 라우팅을 지원한다. 이는 NavigationManager의 NavigateTo 함수를 사용하면 된다. 예를 들어, index 페이지에서 login 페이지로 라우팅을 해야 하는 상황을 가정해보자. index.razor

vip00112.tistory.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

blazor wasm _ local host에서 실행하기 

 

몇 개 샘플을 따라해 보니 충분히 홈페이지 대용으로 사용할 수 있을 듯하다.

간단한 파이썬이나 c# 코드를 짜집기 해서 활용하는 내 수준에서는 javascript를 배워서 뭘 만들기는 어렵고 그나마 익숙한 blazor(c#)를 문법을 활용할 수 있는 것이 큰 장점이다.

 

그런데!!

office add-in과 엮어서 사용하려니 github page에 올린 blazor는 address가 제대로 작동을 하지 않는다.

이것이 github page문제인지 내 publish 의 문제인지 확인을 하고 싶은데 방법이 없어서 찾다보니 다음과 같이 해결하였다.

 

 

 

blazor wasm Sample을 하나 만든다

 

 

 

 

 

"dotnet run"을 하면

실행을 위한 코드가 bin 폴더가 새로 생기면서 그 하부에 wwwroot 폴더에 저장된다.

이 파일을 실행하는 것인데,,,, 실제로 web에서는 파일을 바로 실행시킬 수 없다 

 

 

 

 

 

 


그래서 dotnet publish 명령어를 통해 web page용 파일을 생성한다.

찾아보면 (dotnet publish = dotnet build -c Relase) 인 것처럼 표시하니 어떤 명령어를 사용하더라도 무방하나 여기서는 publish로 하겠다.

 

(-configuration) -Release / Debug 중에 용량이 작은, 배포를 위한 -c Release 

(-output folder) folder name >> - o dist

(-framework) dotnet version(net6.0 / net7.0) >> -f net7.0

의  조합으로 아래처럼 publish를 진행하여 파일을 만든다

 

 

 

 

 

 

# wasm build용 (Emscripten)의 blazor(c#)버전인, wasm-tools workload를 설치해 둔다
dotnet workload install wasm-tools


blaozr 파일을 한번이라도 실행했다면 필요없겠지만, 
혹시 publish / build가 정상적으로 진행되지 않으면 wasm를 만들기 위한 
위 workload를 설치해 준다. powershell에서 실행

 

 

 

index.html 파일을 실행하려면 local server를 실행해야 하는데, 인터넷 글에는 dotnet-serve 명령어를 통해서 테스트 해보게 되어 있다. 하지만 최근에 무슨 세팅의 변화인지 정상작동 하지 않는다.
 (작년에 따라했을 때는 잘 작동을 했던 것 같은데...)  >>  dotnet serve 로 대체됨  (add, 2023-04-23)

# dotnet run 대신 dotnet serve를 통한 실행
dotnet serve -d:bin/Debug/net7.0/browser-wasm/AppBundle

 

 

 

 

 

 

그래서 대안으로 

 

원래 있던 폴더에서 실행했기 때문에, 폴더 구조만 보인다. 

wwwroot/index.html 파일이 있기에 클릭해서 들어가면 정상적으로 작동하지 않는다.

 

 

 

 

아래처럼 wwwroot로 들어가서 다시 http.server를 실행하면 정상적으로 테스트 해볼 수 있다.

처음 소개한 예제들은 이러한 과정을 자동으로 github action을 통해 publish하고, 404 error를 위한 copy page를 만들고 github page의 특성인 jeykill파일 세팅을 무시하는 것을 알려준 것이다.

 

>> wwwroot의 static web 실행방법을 알면 다른 serve나  azure에 올릴 때 오류사항을 미리 점검할 수 있다.

cd dist/wwwroot
python -m http.server

 

 

 

 

 

 

_end

 

반응형