.NET自定义中间件以显示网页/表单

.NET自定义中间件以显示网页/表单,.net,asp.net-core,asp.net-web-api,middleware,.net,Asp.net Core,Asp.net Web Api,Middleware,我正试图找出如何创建自己的中间件,以提供表单或网页 它应该像HangFire或NSwager一样可用,并且应该适用于.NET核心WebApp和WebApi项目: app.UseHangfireDashboard(); app.UseSwaggerUi3(); 因此,在我的情况下,我想使用它如下: app.UseMyDashboard(); 它需要做的是: 提供端点(/myDashboard) 此页面包含一个简单的表单 提交表单并执行一些代码 我怎么做那样的事?我需要为此创建单独的项目吗?因为

我正试图找出如何创建自己的中间件,以提供表单或网页

它应该像HangFire或NSwager一样可用,并且应该适用于.NET核心WebApp和WebApi项目:

app.UseHangfireDashboard();
app.UseSwaggerUi3();
因此,在我的情况下,我想使用它如下:

app.UseMyDashboard();
它需要做的是:

  • 提供端点(/myDashboard)
  • 此页面包含一个简单的表单
  • 提交表单并执行一些代码

  • 我怎么做那样的事?我需要为此创建单独的项目吗?因为我想在任何其他项目中重复使用它,这意味着我想将它打包成一个NuGet包,供内部使用。

    我将为您提供一个简短的答案,您可以浏览文档 为了细节。调用
    app.UseMyDashboard()从startup类,您需要创建一个扩展方法:

    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Http;
    namespace YourNamespace
    {
        public static class MiddleWareExtension
        {
            public static void UseMyDashboard(this IApplicationBuilder app)
            {
                // 1. Provide an endpoint(/ myDashboard)
                app.Map("/myDashboard", app =>
                    app.Run(async (context) =>
                    {
                        //2. This page contains a simple form, Submit the form to redirect to another form
                        await context.Response.WriteAsync("<button onclick=\"window.location.href = '/path'; \">Click me</button>");
                    }));
                //3. Another Form
                app.Map("/path", app =>
                    app.Run(async (context) => await context.Response.WriteAsync("<b>New Form</b>")));
            }
        }
    }
    
    使用Microsoft.AspNetCore.Builder;
    使用Microsoft.AspNetCore.Http;
    名称空间YourNamespace
    {
    公共静态类MiddleWareExtension
    {
    公共静态void UseMyDashboard(此IApplicationBuilder应用程序)
    {
    //1.提供端点(/myDashboard)
    app.Map(“/myDashboard”,app=>
    app.Run(异步(上下文)=>
    {
    //2.此页面包含一个简单表单,提交表单以重定向到其他表单
    wait context.Response.WriteAsync(“单击我”);
    }));
    //3.另一种形式
    app.Map(“/path”,app=>
    运行(异步(上下文)=>wait-context.Response.WriteAsync(“新表单”));
    }
    }
    }
    
    是否可以将HTML放在一个文件和一个单独的项目中?