BlazorテンプレートにWebAppを同居させたい

BlazorのプロジェクトテンプレートにWebAppを同居させるにはどうすれば良いか?

MS謹製のガイドではWebAppを使用するために行う事が書かれているので、それに基づいて試してみた。

まず、Program.csを下記のように変更する。

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorComponents()
    .AddInteractiveServerComponents();

// 追加
builder.Services.AddRazorPages();

var app = builder.Build();

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
    app.UseExceptionHandler("/Error", createScopeForErrors: true);
    // 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();

app.UseStaticFiles();
app.UseRouting();       // 追加
app.UseAuthorization(); // 追加(認証関係なければ無くても良い)

app.UseAntiforgery();

app.MapRazorComponents<App>()
    .AddInteractiveServerRenderMode();

app.MapRazorPages();    // 追加(<AppRoot>/Pages下をマッピング)

app.Run();

<AppRoot>下にPagesフォルダを作成し、そこに、.cshtmlと.cshtml.csを置く。

中身はこんな感じのもの。

@page
@using BlWebTest.Pages

@model TestPage

<h2>Test Page under /Pages</h2>
<h3>@Model.NowDate</h3>
namespace BlWebTest.Pages;

using Microsoft.AspNetCore.Mvc.RazorPages;
public class TestPage : PageModel {
    public DateTime NowDate;
    private readonly ILogger<TestPage> _logger;

    public TestPage(ILogger<TestPage>logger) {
        _logger = logger;
        NowDate = DateTime.Now;
    }

}

実行してみる。

http://・・・/TestPage

表示された。

asp.net 7以前のBlazorServerプロジェクトテンプレートとBlazorプロジェクトテンプレートでは作成されるフォルダ構成が違うので、どうすれば良いのかな?と思ったので、試してみた。

takezou について

ソフトウェア開発会社(ITと言う言葉は大嫌い)で働く、元技術者。 未だに、社内システム位は作ってますが・・・ プログラミング言語はC#が好き。 好きなことだけ拾って投稿しているので、内容にはあまり期待しないでねw
カテゴリー: .NET, asp.net core, Blazor, C#, 技術系 パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください