簡體   English   中英

當我使用捆綁優化在IIS上發布我的ASP.NET MVC應用程序時,為什么SignalR無法正確加載?

[英]Why SignalR is not loaded properly when my ASP.NET MVC application is published on IIS using bundle optimization?

似乎在使用帶有IIS的開發服務器上的SignalR運行我的應用程序時,我在JS控制台中收到以下錯誤(盡管在Debug中本地運行該應用程序完全可以):

 Uncaught Error: SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/js. at hubs:17 at hubs:106 

第17行與以下內容有關:

if (typeof ($.signalR) !== "function") {
    throw new Error("SignalR: SignalR is not loaded. Please ensure jquery.signalR-x.js is referenced before ~/signalr/js.");
}

第106行只是IIFE的結尾。

以下是BundleConfig類:

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        var scriptBundle = new ScriptBundle("~/Scripts/bundle");

        // jQuery
        scriptBundle.Include("~/Scripts/jquery-3.1.1.min.js");

        // Bootstrap
        scriptBundle.Include("~/Scripts/bootstrap.min.js");

        // Knockout
        scriptBundle.Include("~/Scripts/knockout-{version}.js");

        // SignalR
        scriptBundle.Include("~/Scripts/jquery.signalR-{version}.js");

        // Custom site scripts
        scriptBundle.Include("~/Scripts/scripts.js");
        scriptBundle.Include("~/Scripts/scripts-bootstrap.js");
        scriptBundle.Include("~/Scripts/scripts-devextreme.js");


        var styleBundle = new StyleBundle("~/Content/bundle");

        // Bootstrap
        styleBundle.Include("~/Content/bootstrap-telus-theme.min.css");

        // Font Awesome
        styleBundle.Include("~/Content/font-awesome.min.css");

        // Custom site styles
        styleBundle.Include("~/Content/Site.css");
        styleBundle.Include("~/Content/Site-bootstrap-plus.css");
        styleBundle.Include("~/Content/Site-devextreme-plus.css");


        bundles.Add(scriptBundle);
        bundles.Add(styleBundle);

        #if !DEBUG
        BundleTable.EnableOptimizations = true;
        #endif
    }
}

開發服務器上的文檔類型如下:

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Login</title>
    <link rel="favicon" href="/Content/favicons/favicon.ico" />
    <link rel="favicon" sizes="32x32" href="/Content/favicons/favicon-32.png" />
    <link rel="favicon" sizes="128x128" href="/Content/favicons/favicon-128.png" />
    <link rel="apple-touch-icon" href="/Content/favicons/apple-touch-icon.png" />
    <link rel="apple-touch-icon" sizes="72x72" href="/Content/favicons/apple-touch-icon-72.png" />
    <link rel="apple-touch-icon" sizes="114x114" href="/Content/favicons/apple-touch-icon-114.png" />
    <link rel="apple-touch-icon" sizes="144x144" href="/Content/favicons/apple-touch-icon-144.png" />

    <link href="/Content/bundle?v=KoFrSDNrdsCobjey_0WoDyRHewQDRrB1Ov9eEHg15EI1" rel="stylesheet"/>

    <link href="/Content/DevExtremeBundle?v=dvjWkuzRNPhpuO8epzd1bapDA4VbH3NGrM9XfK6lfH41" rel="stylesheet"/>

    <script src="/Scripts/bundle?v=bk8qAjn5FOZNS6DjmQ8qRN1l5sZzYFEHYS7tNOnf4vk1"></script>

    <script src="/Scripts/DevExtremeBundle?v=EDbcZoJEzBcOEMDXw50S76TV4vRJy8nCjafsccwoAas1"></script>

    <script src="/signalr/hubs" type="text/javascript"></script>
</head>

在本地調試中(因此不進行包優化):

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>Login</title>
    <link rel="favicon" href="/Content/favicons/favicon.ico" />
    <link rel="favicon" sizes="32x32" href="/Content/favicons/favicon-32.png" />
    <link rel="favicon" sizes="128x128" href="/Content/favicons/favicon-128.png" />
    <link rel="apple-touch-icon" href="/Content/favicons/apple-touch-icon.png" />
    <link rel="apple-touch-icon" sizes="72x72" href="/Content/favicons/apple-touch-icon-72.png" />
    <link rel="apple-touch-icon" sizes="114x114" href="/Content/favicons/apple-touch-icon-114.png" />
    <link rel="apple-touch-icon" sizes="144x144" href="/Content/favicons/apple-touch-icon-144.png" />

    <link href="/Content/bootstrap-telus-theme.min.css" rel="stylesheet"/>
<link href="/Content/font-awesome.min.css" rel="stylesheet"/>
<link href="/Content/Site.css" rel="stylesheet"/>
<link href="/Content/Site-bootstrap-plus.css" rel="stylesheet"/>
<link href="/Content/Site-devextreme-plus.css" rel="stylesheet"/>

    <link href="/Content/dx.common.css" rel="stylesheet"/>
<link href="/Content/dx.telus.light.css" rel="stylesheet"/>

    <script src="/Scripts/jquery-3.1.1.min.js"></script>
<script src="/Scripts/bootstrap.min.js"></script>
<script src="/Scripts/knockout-3.4.2.debug.js"></script>
<script src="/Scripts/jquery.signalR-2.2.2.js"></script>
<script src="/Scripts/scripts.js"></script>
<script src="/Scripts/scripts-bootstrap.js"></script>
<script src="/Scripts/scripts-devextreme.js"></script>

    <script src="/Scripts/cldr.js"></script>
<script src="/Scripts/cldr/event.js"></script>
<script src="/Scripts/cldr/supplemental.js"></script>
<script src="/Scripts/cldr/unresolved.js"></script>
<script src="/Scripts/globalize.js"></script>
<script src="/Scripts/globalize/message.js"></script>
<script src="/Scripts/globalize/number.js"></script>
<script src="/Scripts/globalize/currency.js"></script>
<script src="/Scripts/globalize/date.js"></script>
<script src="/Scripts/jszip.js"></script>
<script src="/Scripts/dx.all.debug.js"></script>
<script src="/Scripts/aspnet/dx.aspnet.data.js"></script>
<script src="/Scripts/aspnet/dx.aspnet.mvc.js"></script>

    <script src="/signalr/hubs" type="text/javascript"></script>
</head>

開發服務器上發布的內容沒有使用DEBUG常量運行,如果沒有它,我如何使它工作? Imho BundleTable.EnableOptimizations = true; 線不應該弄亂我的signalR捆綁,但這仍然是我可以看到的唯一的區別。 但是,當在本地使用開發服務器配置運行時,即使啟用了優化捆綁包,它也可以工作...

發生此問題是因為捆綁包優化正在跳過最小文件。 而且您捆綁的JS沒有jQuery,這是SignalR必需的。

有關更多詳細信息,請檢查以下答案: 捆綁軟件不包括.min文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM