所以,在把我的头撞在桌子上之后,我想出了这个相当奇怪的问题的答案,并想把它贴出来,以防其他人遇到同样的问题。
当我使用 NuGet 安装“AJAX 工具包”时,我的应用程序停止编译,因为它没有找到脚本管理器正在寻找的“MsAjaxBundle”Web 资源:
<asp:ScriptReference name="MsAjaxBundle" />
当我添加对 ajax 控件工具包的引用时,此代码已添加到我的 Site.Master 文件中。因为它正在寻找那个捆绑包,但它不存在,所以我做了一些谷歌搜索,找到了网络资源,并在我的 Global.asax 文件中用我的脚本管理器注册了它:
ScriptManager.ScriptResourceMapping.AddDefinition("MsAjaxBundle", new ScriptResourceDefinition
{
Path = "~/bundles/MsAjaxJs",
CdnPath = "http://ajax.aspnetcdn.com/ajax/4.5/6/MsAjaxBundle.js",
LoadSuccessExpression = "window.Sys",
CdnSupportsSecureConnection = true
});
它编译并运行!但是,由于某种原因,该应用程序正在抑制“WebForm_PostBackOptions not defined”错误。一旦我发现并开始挖掘,我就被带回了我的 MsAjaxBundle 并最终意识到这是罪魁祸首。再用谷歌搜索一下,发现了这个页面:
http://stephenblog.wpengine.com/archive/2012/09/20/september-2012-release-of-the-ajax-control-toolkit
这指出了 ScriptManager 中的一些变化:
1) 我们需要用 ajaxToolkit:ToolkitScriptManager 替换 asp:ScriptManager
2) 我们需要从 ScriptReferences 中删除 MsAjaxBundle 包
3) 我们需要从 ScriptReferences 中删除 Assembly=”System.Web” 属性
我的问题就解决了。如果有比我更多知识和经验的人可以在评论中解释为什么会发生这种情况,请随意!我很高兴我通过了这个,因为这对我来说特别令人沮丧:P