gpt4 book ai didi

c# - 在 ASP .NET MVC 4 中运行 Owin 应用程序

转载 作者:行者123 更新时间:2023-11-30 15:20:16 25 4
gpt4 key购买 nike

我有一个 ASP .NET MVC 4 项目,我试图在其中集成一个 Owin 应用程序以仅针对特定路径运行,因此所有以 owin-api/* 开头的请求都将由Owin 管道 Microsoft.Owin.Host.SystemWeb.OwinHttpHandler 和 MVC 管道的其他请求 System.Web.Handlers.TransferRequestHandler

为此,我有以下内容:

Web.config

<appSettings>
<add key="owin:appStartup" value="StartupServer.Startup"/>
</appSettings>
<system.webServer>
<handlers>
<remove name="ExtensionlessUrlHandler-Integrated-4.0" />
<remove name="OPTIONSVerbHandler" />
<remove name="TRACEVerbHandler" />
<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
<add name="Owin" verb="*" path="owin-api/*" type="Microsoft.Owin.Host.SystemWeb.OwinHttpHandler, Microsoft.Owin.Host.SystemWeb" />
</handlers>
</system.webServer>

启动类:

namespace StartupServer
{

public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Run(context =>
{
return context.Response.WriteAsync("Owin API");
});
}
}
}

但是“Owin API”现在是每个请求的输出。仅当 Web.config 中指定的路径 owin-api/* 时,我如何才能告诉 IIS 使用 OwinHttpHandler?

最佳答案

app.Run()在 OWIN 管道中插入一个没有下一个中间件引用的中间件。所以你可能想用 app.Use() 替换它.

您可以检测该 URL 并以此为基础制定您的逻辑。例如:

app.Use(async (context, next) =>
{
if (context.Request.Uri.AbsolutePath.StartsWith("/owin-api"))
{
await context.Response.WriteAsync("Owin API");
}
await next();
});

关于c# - 在 ASP .NET MVC 4 中运行 Owin 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40406313/

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