gpt4 book ai didi

.net - 共享默认 MVC Controller

转载 作者:行者123 更新时间:2023-12-04 16:05:29 24 4
gpt4 key购买 nike

目前,我正在构建许多小型 API。许多这些项目共享一些基本的 Controller 逻辑。有没有办法将它们添加到 nuget 包中并在启动期间使用它们?
例如。就像添加 Mvc:

IApplicationBuilder app;    
....

app.UseMvc;
app.UseBasicApiVersionController();

这个想法是我们在所有微服务中都有版本端点。
例如:
http://url/version
返回{“版本”:“1.0.0”}
我如何将它变成一个 nuget 包?
那么所有开发者只需要添加 1 行代码就可以将这个端点添加到他们的微服务中吗?我们正在使用 dotnet 核心。
不要帮助自己创建nuget包:)

我对入门的猜测与此类似:
public static IApplicationBuilder UseBasicApiVersionController(this IApplicationBuilder app)
{
if (app == null)
throw new ArgumentNullException("app");

..... // What should I do?

return app;
}

*编辑:
如果您将 Controller 添加到 nuget 包项目,它将被自动检测到。但这不是我想要的功能。
我可能有 10 个需要该 Controller 的服务。虽然有 1-2 个只需要其他版本控制逻辑的服务。例如。面向客户的应用程序不应有“/version”端点。
这就是为什么我想在启动时使用 app.UseBasicApiVersionController();

最佳答案

如果只是为了版本,您可以添加一个共享扩展或一个返回版本的中间件。

public class VersionMiddleware: OwinMiddleware
{
private static readonly PathString Path = new PathString("/version");
private OwinMiddleware Next;

public VersionMiddleware(OwinMiddleware next) : base(next)
{
Next = next;
}

public async override Task Invoke(IOwinContext context)
{

if (!context.Request.Path.Equals(Path))
{
await Next.Invoke(context);
return;
}

var version = Assembly.[HowToGetYourVersionAsAnObject]

context.Response.StatusCode = (int)HttpStatusCode.OK;
context.Response.ContentType = "application/json";
context.Response.Write(JsonConvert.SerializeObject(responseData));
}
}

关于.net - 共享默认 MVC Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45210562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com