Azure の静的サイトをホストする Azure Static Web Apps が Blazor と C# の Functions サポートしたらしいので試してみた
まだプレビューのサービスですが、期待大の Azure Static Web Apps で Blazor と C# の関数がサポートされました。以下のブログでアナウンスされてます。
Azure Static Web Apps with .NET and Blazor
Microsoft MVP の三宅さんのツイートのトップにも、このサービス関連のスライドがピン止めされてますね!
Front-end web applications with Azure Static Web Apps https://t.co/oAQN1Zj74R #VACD
— k-miyake (@kazuyukimiyake) July 28, 2020
Azure Static Web Apps の更新情報を確認してみると Python もサポートされていたりして着々と開発が進んでるみたいです。
Blazor + C# の Functions の試し方
最初に紹介したブログに書いてあるのですが、若干気を付ける点があったので書いておこうと思います。
ブログにある GitHub のリポジトリを自分のアカウントにコピーして始めるのですが、これをクローンして Api プロジェクトと Client プロジェクトをローカルで実行して Client の Fetch data のページを開くと CORS のエラーが出ます。
これは、デフォルトでローカル開発用の設定ファイルの local.settings.json
が .gitignore
に入ってるのでリポジトリに含まれていないためです。なので以下の内容の local.settings.json
を Api プロジェクトに追加することでエラー無しでローカルで実行できます。
{
"Values": {
},
"Host": {
"CORS": "*"
}
}
これを追加して実行すると以下のようにローカルで動くようになります。
Client プロジェクトの Program.cs
を見てみると builder.Configuration["BaseAddress"] ?? builder.HostEnvironment.BaseAddress
という感じで設定に BaseAddress
という設定があったら HttpClient
の BaseAddress
に設定しています。設定にない場合はホストの BaseAddress
を使うようになっています。
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.WebAssembly.Hosting;
using Microsoft.Extensions.DependencyInjection;
namespace BlazorApp.Client
{
public class Program
{
public static async Task Main(string[] args)
{
var builder = WebAssemblyHostBuilder.CreateDefault(args);
builder.RootComponents.Add<App>("app");
var baseAddress = builder.Configuration["BaseAddress"] ?? builder.HostEnvironment.BaseAddress;
builder.Services.AddScoped(_ => new HttpClient { BaseAddress = new Uri(baseAddress) });
await builder.Build().RunAsync();
}
}
}
Blazor WebAssembly の開発中のみ有効な設定は wwwroot/appsettings.Development.json
に書いてあって、ここに BaseAddress
が http://localhost:7071/
であると書いてあります。
{
"BaseAddress": "http://localhost:7071/"
}
これでローカルの時だけローカルで実行している Azure Functions の方を見に行くようになっています。Azure Static Web Apps にデプロイしたときは、関数は同じホストにいるので同じホストの /api/関数名
を見に行くようになっています。なるほどね。
デプロイして実行
デプロイから実行するのは本当にトラブルがないです。routes.json
もリポジトリに入ってるし。フレームワークの中の選択肢に Blazor も入ってるし。
既存のプロジェクトがあって、それに合わせるとなるとちょっとカスタム頑張らないとですが、そうじゃなければ Static Web Apps が想定しているものに合わせるのがいいですね。
デプロイが完了すると紐づけた GitHub のリポジトリに自動で GitHub Actions が構成されて動きます。
動き終わるとちゃんと表示されました。
PullRequest の時に確認用の環境をたててくれたりとかは試してませんが、生成された GitHub Actions を見る限り対応してくれてそうでした。
まとめ
ということで、ローカル実行を試してみようと思ったら local.settings.json
を作っておかないと CORS のエラーになってしまいますが、そこさえ気を付けていれば割と簡単にローカル実行から Static Web Apps へのデプロイまでを体験するのは、そんなに難しくないと感じました。
今のところ一番 GA が待ち遠しいサービスなので期待大ですね!
Author And Source
この問題について(Azure の静的サイトをホストする Azure Static Web Apps が Blazor と C# の Functions サポートしたらしいので試してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/okazuki/items/865a45fcdbc594c412dc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .