VS2008 JS调试和Silverlight 后台代码调试 相互影响的问题。---自己做实例证明
2011-10-08 17:16 沐海 阅读(679) 评论(0) 编辑 收藏 举报但是有几点要注意。首先,不能在同一调试过程中调试托管代码和脚本。(即XAML。cs 和JAVASCRIPT)
这就是说,如果在XAML的隐藏代码中设置一个断点,并且已经打开了Silverlight调试,那么断点将发挥相应的作用 |
然而,如果在脚本中也设置了断点,那么在属性--"Silverlight"调试打开
"Silverlight"
调试打开
"Silverlight"
调试打开时,脚本中的断点将不能起作用。
"Silverlight"
调试打开 还要 打开
测试前注意:IE开禁用脚本调试
不选择 Silverlight调试时。XAML的后台断点被忽略。JS和后台代码都可以调试。
上面用来证明。选中Silverlight调试开关 打开 时 JS与Silverlight的冲突。 JS的调试器被Silverlight占领。下面用来证明,选中Silverlight调试开关 关闭时。 也就是正常的调试VS时。 Xaml.CS 的断点被忽略。 |
"Silverlight"
调试打开 还要 停止
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
经过测试。
1.发现如XAML.CS这样类似的样式文件的隐藏代码,和JS调试有冲突。JS可调试。Xaml。cs后台断点 被忽略
2.
与Silverlight无关。 本页JS与本页隐藏代码没有冲突。因为是两个调试器。
VS为什么可以响应JS调试:调试前的设置你会发现。JS调试必须先把浏览器的禁用调试设置不选。这证明其实JS的调试虽然是通过VS来运行的。可VS在调试JS中时的作用和FireBUG一样的。都是针对浏览器调试的。而为什么有人说调试JS时,后台就没办法调试。JS调试针对是浏览器的。后台调试是针对IIS的请求的。所以这样时他们是没有冲突的。
3.包含silverlight的aspx文件(JS断点 和 隐藏代码断点) 与 silverlight 的Xaml。cs文件
结果:Xaml。cs后台断点 被忽略
我测试。
1.选择了属性--WEB--Silverlight调试。
2.建立新页面Default。aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SilverlightApplication1.Web._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> <script type="text/javascript"> function onSilverlightError() { var k = 1; debugger; //断点 alert(k); window.open("http://localhost:18691/SilverlightApplication1TestPage.aspx"); } </script> </head> <body > <form id="form1" runat="server"> <div > <button onclick="onSilverlightError()"></button> </div> </form> </body> </html>
3.在SilverlightApplication1TestPage.aspx 指向的XMal后台 MainPage。xaml.cs 中加断点
namespace SilverlightApplication1 { public partial class MainPage : UserControl { public MainPage() { InitializeComponent(); myButton.Click+=new RoutedEventHandler(myButton_Click); } void myButton_Click(object sender, RoutedEventArgs e) { //加断点 Button at = sender as Button; at.Content = "点击"; outputBlock.Text = "点击"; } void myButton_MouseEnter(object sender, MouseEventArgs e) { Button at = sender as Button; at.Content = "鼠标ENTER"; outputBlock.Text = "鼠标ENTER"; } } }
最后发现。Default的脚本运行了。可是Xaml.cs这个断点没响应(被忽略)。直接执行完毕了。++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2. 本页JS代码和本页后台 CS文件 调试 无冲突;
因为。JS代码调试 通过另开一个调试器来调试。 CS的代码通过本地的VS后台来集成调试。
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="SilverlightApplication1.Web._Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title></title> <script type="text/javascript"> function onSilverlightError() { var k = 1; debugger; //断点 alert(k); window.open("http://localhost:18691/SilverlightApplication1TestPage.aspx"); } </script> </head> <body > <form id="form1" runat="server"> <div > <button onclick="onSilverlightError()"></button><br /> <br /> <asp:Button ID="CCK" runat="server" onclick="CCK_Click" /> </div> </form> </body> </html>
namespace SilverlightApplication1.Web { public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void CCK_Click(object sender, EventArgs e) { //断点 CCK.Text = "OK!"; } } }
===================================================================
3.包含silverlight的aspx文件(JS断点 和 隐藏代码断点) 与 silverlight 的Xaml。cs文件 (后台断点) 冲突
结果:Xaml。cs文件 被忽略
Xaml。cs文件 用的是第一个 (上面 1 里的那个)
<%@ Page Language="C#" AutoEventWireup="true" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> protected void ra_Click(object sender, EventArgs e) //断点 { ra.Text = "cc"; } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>SilverlightApplication1</title> <style type="text/css"> html, body { height: 100%; overflow: auto; } body { padding: 0; margin: 0; } #silverlightControlHost { height: 100%; text-align:center; } </style> <script type="text/javascript" src="Silverlight.js"></script> <script type="text/javascript"> function aa() { debugger; //断点 alert("1"); } function onSilverlightError(sender, args) { var appSource = ""; if (sender != null & sender != 0) { appSource = sender.getHost().Source; } var errorType = args.ErrorType; var iErrorCode = args.ErrorCode; if (errorType == "ImageError" || errorType == "MediaError") { return; } var errMsg = "Silverlight 应用程序中未处理的错误 " + appSource + "\n" ; errMsg += "代码: "+ iErrorCode + " \n"; errMsg += "类别: " + errorType + " \n"; errMsg += "消息: " + args.ErrorMessage + " \n"; if (errorType == "ParserError") { errMsg += "文件: " + args.xamlFile + " \n"; errMsg += "行: " + args.lineNumber + " \n"; errMsg += "位置: " + args.charPosition + " \n"; } else if (errorType == "RuntimeError") { if (args.lineNumber != 0) { errMsg += "行: " + args.lineNumber + " \n"; errMsg += "位置: " + args.charPosition + " \n"; } errMsg += "方法名称: " + args.methodName + " \n"; } throw new Error(errMsg); } </script> </head> <body> <form id="form1" runat="server" style="height:100%;"> <asp:Button ID="ra" runat="server" onclick="ra_Click" /> <button onclick="aa()"></button> <div id="silverlightControlHost"> <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="50%" height="50%"> <param name="source" value="ClientBin/SilverlightApplication1.xap"/> <param name="onerror" value="onSilverlightError" /> <param name="background" value="white" /> <param name="minRuntimeVersion" value="3.0.40624.0" /> <param name="autoUpgrade" value="true" /> <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration: none;"> <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="获取 Microsoft Silverlight" style="border-style: none"/> </a> </object><iframe id="_sl_historyFrame" style='visibility:hidden;height:0;width:0;border:0px'></iframe></div> </form> </body> </html>(&)
结果:runat的断点响应了。JS的断点响应了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述