我正在尝试在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”的信息 - 这似乎是我的版本的问题,但我找不到如何将域更改为正确的信息。我们应该在生产中重新安装框架吗?
答案 0 :(得分:6)
服务器上的文件 ,但它最近表现得非常烦躁(现在甚至无法访问任何文件),因此请始终使用本地故障转移。
对于.Net 4.0,只需将其添加到您的Global.asax文件中 - 它会使用新版本更新所有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
}
);
}
答案 1 :(得分:0)
我也遇到了运行4.0的同样问题,但由于框架本身放置了对ajax.microsoft.com的引用,我找不到任何指示如何修复此问题的内容。
答案 2 :(得分:0)
我知道这不能解决问题。但这更清楚我们如何使用它,因为这个链接非常好地解释了它。它的语法类似于&#34; Nikola Bogdanovic&#34;已提及,但它还包括将在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"
});