繁体   English   中英

带有system.webServer / modules的Signalr / hub 404

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM