[英]Signalr/hubs 404 with system.webServer/modules
我有一个旧网站,它使用自定义网址重写,如下所示:
<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一起工作呢?
这是因为由于更改url而找不到生成的代理( signalr/hubs
)? 如果是这样,请尝试使用自己的代理(没有生成代理的代码),即:
代替:
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;
..............
}
我也尝试过使用生成的代理,它可能可以工作,但是它不像chatHub.server和chatHub.client这样的聊天中心不那么直接/有用,并且无法更改完整的代码。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.