簡體   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