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