zoukankan      html  css  js  c++  java
  • VS2008 JS调试和Silverlight 后台代码调试 相互影响的问题。自己做实例证明

    但是有几点要注意。首先,不能在同一调试过程中调试托管代码和脚本。(即XAML。cs 和JAVASCRIPT)
    这就是说,如果在XAML的隐藏代码中设置一个断点,并且已经打开了Silverlight调试,那么断点将发挥相应的作用
    然而,如果在脚本中也设置了断点,那么在属性--"Silverlight"调试打开"Silverlight"调试打开时,脚本中的断点将不能起作用。
    
    
    
    
    而:选中属性--"Silverlight"调试打开 还要 打开

    测试前注意:IE开禁用脚本调试

    不选择 Silverlight调试时。XAML的后台断点被忽略。JS和后台代码都可以调试。

    当开Silverlight调试时,JS代码的VS调试器提示不能用。因为他开一个用于检测Silverlight了。所以说JS调试和Silverlight冲突。

    提示“无法附加到崩溃进程。已附加了一个调试器。”

     

    上面用来证明。选中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;0;border:0px'></iframe></div>
    		 
    		  
      </form>
    </body>
    </html>(&)
    
     结果:runat的断点响应了。JS的断点响应了
     
    本人声明: 个人主页:沐海(http://www.cnblogs.com/mahaisong) 以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!
  • 相关阅读:
    mysql配置图解(mysql 5.5)
    C++中的enum
    vc6.0中的dsp,dsw,ncb,opt,clw,plg,aps等文件的简单说明
    using namespace std
    C#中Cache的使用 迎客
    数据库里的存储过程和事务有什么区别? 迎客
    WINDOWS远程默认端口3389的正确修改方式 迎客
    DES加密和解密PHP,Java,ObjectC统一的方法 迎客
    转:15点 老外聊iPhone游戏开发注意事项 迎客
    windows server 2003 删除默认共享 迎客
  • 原文地址:https://www.cnblogs.com/mahaisong/p/2202329.html
Copyright © 2011-2022 走看看