Signalr/hubs 404 系统。webServer/modules
Signalr/hubs 404 with system.webServer/modules
我有一个使用自定义 url 重写的旧网站,如下所示:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="URLHandler" type="Lib.URLHandler" preCondition="" />
</modules>
</system.webServer>
现在,当我将 Signalr 添加到该网站时,它会显示 404。后来我注意到删除 URLHandler 模块可以使 Signalr 正常工作。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
我无法删除 URLHandler,因为它长期以来一直在管理大量页面。那么如何让 Signalr 和 URLHandler 一起工作呢?
这是因为它找不到生成的代理(signalr/hubs
)因为改变url?如果是这样,请尝试使用自己的代理(没有生成代理的代码)即:
而不是:
var contosoChatHubProxy = $.connection.contosoChatHub;
使用:
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
查看不使用生成的代理的示例并继续阅读:http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#genproxy
我找到了一个解决方案,我在 URLHandler 中添加了一行来完成这项工作。
void context_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.OriginalString.ToLower().Contains("signalr/hubs"))
return;
..............
}
我也尝试过使用生成的代理,它可能会起作用,但它不像 straight/helpful 那样,因为像 chatHub.server 和 chatHub.client 这样的聊天中心不可用并且需要更改完整代码。
我有一个使用自定义 url 重写的旧网站,如下所示:
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<add name="URLHandler" type="Lib.URLHandler" preCondition="" />
</modules>
</system.webServer>
现在,当我将 Signalr 添加到该网站时,它会显示 404。后来我注意到删除 URLHandler 模块可以使 Signalr 正常工作。
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
</modules>
</system.webServer>
我无法删除 URLHandler,因为它长期以来一直在管理大量页面。那么如何让 Signalr 和 URLHandler 一起工作呢?
这是因为它找不到生成的代理(signalr/hubs
)因为改变url?如果是这样,请尝试使用自己的代理(没有生成代理的代码)即:
而不是:
var contosoChatHubProxy = $.connection.contosoChatHub;
使用:
var connection = $.hubConnection();
var contosoChatHubProxy = connection.createHubProxy('contosoChatHub');
查看不使用生成的代理的示例并继续阅读:http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#genproxy
我找到了一个解决方案,我在 URLHandler 中添加了一行来完成这项工作。
void context_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.Url.OriginalString.ToLower().Contains("signalr/hubs"))
return;
..............
}
我也尝试过使用生成的代理,它可能会起作用,但它不像 straight/helpful 那样,因为像 chatHub.server 和 chatHub.client 这样的聊天中心不可用并且需要更改完整代码。