gpt4 book ai didi

c# - 使用 .MapOwinRoute() 而不是 OwinStartup/Configuration 类 - 协商返回 404

转载 作者:行者123 更新时间:2023-11-30 22:09:50 25 4
gpt4 key购买 nike

我正在开发一个使用 SignalR 2 的应用程序,但在通过 .MapOwinRoute() 扩展方法为 ASP.net 4 RouteTable.Routes 映射 SignalR 时遇到了问题。喜欢:

RouteTable.Routes.MapOwinRoute("signalr.hubs", "signalr/hubs", a => a.MapSignalR());

也添加到 Web.Config 中:

<appSettings>
<add key="owin:AutomaticAppStartup" value="false" />
</appSettings

它映射了。导航到/signalr/hubs 为我提供了集线器代理,但是当我连接我的代码时:

$(function () {
var orderProcessing = $.connection.orderProcessing;
$.connection.hub.start().done(function () {
orderProcessing.server.doStuff();
});
});

路由/signalr/negotiate 返回 404。

当我这样做时一切正常:

[assembly: OwinStartup(typeof(Web.Startup))]

namespace Web
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}

问题是使用 OwinStartup 对我来说不是一个选项,因为我需要用我自己的依赖解析器配置 SignalR,将它链接到我使用的通用 IOC 容器,并且它在 OwinStartup 点还没有准备好。我还需要使用自定义选项配置 JSON 序列化程序,这些选项也会在稍后阶段进行配置。

不太明白我在这里遗漏了什么。

最佳答案

您不想映射路由而​​是想映射前缀(路径)。此外,您使用了错误的 url 和错误的 IAppBuilder 重载。

RouteTable.Routes.MapOwinPath("/signalr", app => app.RunSignalR());

上述逻辑采用任何以 SignalR 开头的路径并将其传递给 SignalR 中间件。

关于c# - 使用 .MapOwinRoute() 而不是 OwinStartup/Configuration 类 - 协商返回 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21278065/

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