4

我正在尝试在 ScriptManager 中使用 EnableCdn 属性。基本上我的母版页文件中有这段代码:

<asp:ScriptManager ID="MainScriptManager" runat="server" EnablePartialRendering="true"
    EnableScriptGlobalization="true" EnableScriptLocalization="true" AsyncPostBackTimeout="3600" EnableCdn="True">

这适用于我们通过 HTTP 连接的开发环境 - 它引用了这样的脚本:

<script src="http://ajax.aspnetcdn.com/ajax/4.5/5/WebForms.js" type="text/javascript"></script>

但是在我们使用 SSL 的生产服务器上,它会尝试包含这样的脚本:

<script src="https://ajax.microsoft.com/ajax/4.0/2/WebForms.js" type="text/javascript"></script>

有两个不同之处(版本和域),但大多数来自 4.0 版的文件不在 CDN 服务器上(通过 https!)。

任何人都可以为这个问题提出某种解决方案吗?这是否意味着通过 https 不支持 4.0 版本,但通过 http 支持(我可以通过两种方法从 4.5 版本下载文件,但 4.0 只能通过 HTTP 获得)。

编辑:

我找到了“ajax.microsoft.com 重命名为 ajax.aspnetcdn.com”的信息 - 这似乎是我的版本的问题,但我找不到如何将域更改为正确域的信息。我们应该在生产中重新安装框架吗?

4

3 回答 3

7

文件服务器上,但它最近表现得非常烦躁(现在甚至根本无法访问任何文件),所以总是使用本地故障转移。

对于 .Net 4.0,只需将其添加到您的 Global.asax 文件中 - 它会使用新的 CDN 域更新所有 CDN 域(对于以前的版本,只需适当地更改链接):

protected void Application_Start(object sender, EventArgs e)
{
    System.Reflection.Assembly web = typeof(HttpApplication).Assembly;
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "WebForms.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "WebForms.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/WebForms.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/WebForms.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "Focus.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "Focus.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Focus.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Focus.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "SmartNav.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "SmartNav.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/SmartNav.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/SmartNav.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "WebUIValidation.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "WebUIValidation.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/WebUIValidation.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/WebUIValidation.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "TreeView.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "TreeView.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/TreeView.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/TreeView.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "Menu.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "Menu.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Menu.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Menu.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MenuStandards.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "MenuStandards.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MenuStandards.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MenuStandards.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "WebParts.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "WebParts.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/WebParts.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/WebParts.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "GridView.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "GridView.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/GridView.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/GridView.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "DetailsView.js",
        web,
        new ScriptResourceDefinition
        {
            ResourceName = "DetailsView.js",
            ResourceAssembly = web,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/DetailsView.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/DetailsView.js",
            CdnSupportsSecureConnection = true
        }
    );
    System.Reflection.Assembly ext = typeof(ScriptManager).Assembly;
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjax.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjax.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjax.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjax.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxApplicationServices.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxApplicationServices.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxApplicationServices.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxApplicationServices.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxComponentModel.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxComponentModel.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxComponentModel.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxComponentModel.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxCore.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxCore.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxCore.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxCore.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxGlobalization.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxGlobalization.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxGlobalization.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxGlobalization.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxHistory.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxHistory.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxHistory.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxHistory.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxNetwork.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxNetwork.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxNetwork.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxNetwork.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxSerialization.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxSerialization.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxSerialization.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxSerialization.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxTimer.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxTimer.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxTimer.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxTimer.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxWebForms.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxWebForms.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxWebForms.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxWebForms.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "MicrosoftAjaxWebServices.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "MicrosoftAjaxWebServices.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxWebServices.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/MicrosoftAjaxWebServices.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "Date.HijriCalendar.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "Date.HijriCalendar.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Date.HijriCalendar.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Date.HijriCalendar.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
    ScriptManager.ScriptResourceMapping.AddDefinition(
        "Date.UmAlQuraCalendar.js",
        ext,
        new ScriptResourceDefinition
        {
            ResourceName = "Date.UmAlQuraCalendar.js",
            ResourceAssembly = ext,
            CdnPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Date.UmAlQuraCalendar.js",
            CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/4.0/2/Date.UmAlQuraCalendar.debug.js",
            CdnSupportsSecureConnection = true
        }
    );
}
于 2012-08-24T08:31:19.180 回答
0

我在运行 4.0 时也遇到了同样的问题,我找不到任何表明应该如何解决这个问题的东西,因为对 ajax.microsoft.com 的引用是由框架本身放置的。

于 2012-08-23T11:15:46.647 回答
0

签出此链接

我知道这并不能解决所提出的问题。但这更清楚地说明了我们如何使用它,因为这个链接很好地解释了它。它具有与“Nikola Bogdanovic”提到的类似的语法,但它还包括在 CDN 不响应请求时将使用的本地路径。

例如。(示例代码):

string str = "1.7.1";

ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition

{

    Path = "~/Scripts/jquery-" + str + ".min.js", 

    DebugPath = "~/Scripts/jquery-" + str + ".js", 

    CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".min.js", 

    CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + str + ".js", 

    CdnSupportsSecureConnection = true, 

    LoadSuccessExpression = "window.jQuery"

});
于 2014-08-04T05:44:19.323 回答