守望轩

无情未必真豪杰,怜子如何不丈夫

博客园 首页 新随笔 联系 订阅 管理
  123 Posts :: 0 Stories :: 325 Comments :: 2 Trackbacks

2009年7月3日 #

原文地址: How to use tracing with ASP.NET Ajax

如果你在使用ASP.NET Ajax的时候,遇到一个页面问题,想在调试时候跟踪语句,有个比较快速的方法:使用“Sys.Debug.trace”函数。

<script language="javascript" type="text/javascript">

function PositionDiv() {

Sys.Debug.trace("Entering PositionDiv Function");

//some other code

Sys.Debug.trace("Exiting PositionDiv Function");

}

</script>

http://www.watch-life.net/visual-studio/use-tracing-with-asp-net-ajax.html

为了看到跟踪输出的内容,在页面上加一个TextArea的控件,控件的ID为“TraceConsole”。这个现实的跟踪的可用性,一旦应用,将意味着将该TextArea必须手动添加到输出。不过,在调试网站的时候,跟踪的内容也被写到Visual Studio的输出窗口,就像FireFox的输出控制台一样。

Sys.Debug 类还有其他许多好的方法,例如:
assert:如果被测试的条件是false的,将会有个消息框来显示消息。
fail:引发程序终止或中断调试。
traceDump:用清晰的格式显示对象数据。

延伸阅读:
1、有关Sys.Debug 参见:http://msdn.microsoft.com/zh-cn/library/bb397422.aspx

2、Debugging and Tracing AJAx Applications

下面是在不同的方式来debug AJAX-enabled ASP.NET application



(1)在Configuration文件中授权.

(2)在服务端使用tracing

(3)使用在Sys.Debug类的方法设置breakpoints和handle trace输出

(4)在浏览器材里面授权debugging

(5)追加Visual Studio2008 debugger或在你的浏览器里面扩展工具.

(7)使用扩展工具捕获HTTP的交换.




(1)在Configuration文件中授权.




在Configuration中添加一个compilation元素,设置一贯debug属性为"true",如下面:


 


<configuration>

 
<system.web>

   
<compilation debug="true">

     
<!-- etc. -->

   
</compilation>

 
</system.web>

<configuration>





要将应用程序发布,就要从debug该为Release才能发布



在Web.config文件中,如果compilation元素中包括debug,就将里面debug属性该为"false"



确定在ScriptManager中面的ScriptMode属性设置为Release



而在@page中指定的debug属性不会影响ASP.NET AJAX applications.而为ScriptManager在Web.config中设置的IsDebuggingEnabled
and ScriptMode属性是决定是否呈现debug脚本.




(2)Tracing on the Server




怎样授权ASP.NET页面Tracing就是这样

<%@ Page Trace="true" %>



而在ASP.NET
AJAX中就必须有一个partial-page呈现授权,也就是要在ScriptManager中将EnablePartialRendering属性设置为"true",

其实就是所说的饿"view debugger trace messages in the Output window". 


(3)Debug Helper Class


ASP.NET为调试客户端应用程序提供一个Sys.Debug Class.如果你是IE你可以在你的也面上创建一个





就是使用下面的方法:



Sys.Debug.assert(condition,message,displayCaller)

给出检测条件,并如果条件为false时候,就会有在debugger中提示.



Sys.Debug.clearTrace()

清楚所有的指定在id为"TraceConsole"元素中显示的信息.



Sys.Debug.traceDump(object,name)



抑制一个对象在debugger console和TraceConsole中输出.



Sys.Debug.fail(message)

显示一个message在debugger的输出窗口和TraceConsole的textarea元素中



Sys.Debug.trace(text)

在debugger console和TraceConsole中追加一行文本.

这个是MSDN上的事例

 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<html >

<head id="Head1" runat="server">

   
<title>Untitled Page</title>

<script language="javascript" type="text/javascript">

function btnAssert_onclick() {

   
var n;

   
// Insert code intended to set n to a positive integer.

    if (false) n = 3;

   
// Assert if n is not greater than 0.

    Sys.Debug.assert(n > 0, "n must be set to a positive integer.");

}




function btnFail_onclick() {

   
var n;

   
// Insert code intended to set n to a numeric value.

    if (false) n = 3;

   
// Fail if n is not numeric.

    if (isNaN(n)) Sys.Debug.fail("The value of n must be a number.");

}




function btnTrace_onclick() {

    v = form1.text1.value;

    Sys.Debug.trace("Name set to " + "\"" + v + "\".");

    alert("Hello " + v + ".");

}




function btnDump_onclick() {

    Sys.Debug.traceDump(form1.text1, "Name textbox");

    alert("Hello " + form1.text1.value + ".");

}




function btnClear_onclick() {

    Sys.Debug.clearTrace()

    alert("Trace console cleared.");

}


</script>

</head>

<body>

<form id="form1" runat="server">

   
<h2>Sys.Debug Methods Test Page</h2>

   
<asp:ScriptManager ID="ScriptManager1" 

        runat
="server" />

   
<p><b>Use these buttons to demonstrate the assert() and fail() 

    methods:
</b><br />

   
<input id="btnAssert" type="button" value="Assert" 

        style
="width: 100px" 

        onclick
="return btnAssert_onclick()" /> &nbsp

   
<input id="btnFail" type="button" value="Fail" 

        style
="width: 100px" onclick="return btnFail_onclick()" />

   
</p><hr />

   
<b>Use the textbox and buttons below to demonstrate tracing.</b>

   
<br />

   
<p>Enter your name here:<br />

   
<input id="text1" maxlength="50" type="text" />

   
<br />

   
<br />

   
<input id="btnTrace" type="button" value="Trace" 

        style
="width: 100px" onclick="return btnTrace_onclick()" /><br />

   
<input id="btnDump" type="button" value="TraceDump" 

        style
="width: 100px" onclick="return btnDump_onclick()" /><br />

   
<input id="btnClear" type="button" value="ClearTrace" 

        style
="width: 100px" onclick="return btnClear_onclick()" /><br />

   
<br /></p>

    View output in the TraceConsole textarea below.

   
<br />

   
<textarea id='TraceConsole' rows="10" cols="50" 

        title
="TraceConsole"></textarea>

</form>

</body>

</html>




(4)To enable debugging in Internet Explorer


就是在IE里面设置Disable Script Debugging.

Disable Script Debugging (Other)

Display a notification about every script error

Show friendly HTTP error messages 

都打开就能调试js.



当然还可以使用我们熟悉的那IE的扩展工具.



Attaching the Visual Studio Debugger to Internet Explorer



你要debug客户端的脚本,你必须追加debugger到IE里面.



在Visual Studio debugger中选中Debug menu,选中Attach to Process,只后会有一个Attach to
Process对话框.选种iexplore.exe.



这样就可以拉.如果你使用IE遭遇脚本错误,并且你按这样的设定,但不在当前就追加到debugger中,浏览器会提示你选择一个debugger.你既能继续不debugging或追加一个debugger直接通过代码.

 

更多文章见:守望轩[http://www.watch-life.net/]
posted @ 2009-07-03 09:20 xjb 阅读(51) | 评论 (0)编辑

2009年7月2日 #

原文地址:How to enable debugging of your Web Site

在debug的模式配置下运行一个页面,你必须选择菜单:调试+开始启动 或按下F5.

在默认的情况下,调试是没有启用的。如果你想启动调试网站项目,就需要进行配置。这个设置通过修改web.config文件来实现。
默认情况下,在web.config 的compilation节点 的debug 选项设置值是false。

http://www.watch-life.net/visual-studio/enable-debugging-of-your-web-site.html

<compilation debug="false" strict="false" explicit="true"> </compilation>

当你第一次按下F5的时候,会出现如下对话框:

EnablingDebugging

如果你单击“确定”,Visual Web Developer将会修改web.config 文件,显示“debug=true”

<compilation debug="true" strict="false" explicit="true"> </compilation>

注意:网站发布的时候,要把这个debug选项设置为false,可以提高程序运行的性能。

有关compilation节点的配置详情见:compilation 元素ASP.NET 设置架构)

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-07-02 10:04 xjb 阅读(37) | 评论 (0)编辑

2009年7月1日 #

原文地址:How to get the browser agent using ASP.NET Ajax

当编写一个web应用的时候,很多时候,针对不同的浏览器做不同的页面请求,ASP.NET Ajax 有个简单的办法通过 Sys.Browser来获取浏览器对象。

http://www.watch-life.net/visual-studio/get-the-browser-agent-using-asp-net-ajax.html

例如,想针对Opera浏览器做一些不同的页面请求,下面的代码块显示可以如何:

<script language="javascript" type="text/javascript">
function DoSomething() {
if(Sys.Browser.agent === Sys.Browser.Opera)
{
// opera specific code here
}
}
</script>

还有些其他有用的浏览器对象属性,比如,Sys.Browser.version.toString(),将返回浏览器的版本。可以针对每个浏览器版版来决定如何做。

1)对于Sys.Browser.agent可能返回如下四个值

Sys.Browser.InternetExplorer
Sys.Browser.FireFox
Sys.Browser.Safari
Sys.Browser.Opera

2)Sys.Browser还有个“name”属性:Sys.Browser.name可能返回如下四个值

Microsoft Internet Explorer

Safari
Opera

对于非上述四种主流的浏览器的检测不能使用Sys.Browser.agent,则可以使用Sys.Browser.name和Sys.Browser.version 来判断。

3)针对Sys.Browser.agent 在Microsoft AJAX Library的实现如下:


Sys.Browser = {};
Sys.Browser.InternetExplorer = {};
Sys.Browser.Firefox = {};
Sys.Browser.Safari = {};
Sys.Browser.Opera = {};
Sys.Browser.agent = null;
Sys.Browser.hasDebuggerStatement = false;
Sys.Browser.name = navigator.appName;
Sys.Browser.version = parseFloat(navigator.appVersion);
if (navigator.userAgent.indexOf(' MSIE ') > -1) {
Sys.Browser.agent = Sys.Browser.InternetExplorer;
Sys.Browser.version = parseFloat(navigator.userAgent.match(/MSIE (\d+\.\d+)/)[1]);
Sys.Browser.hasDebuggerStatement = true;
}
else if (navigator.userAgent.indexOf(' Firefox/') > -1) {
Sys.Browser.agent = Sys.Browser.Firefox;
Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Firefox\/(\d+\.\d+)/)[1]);
Sys.Browser.name = 'Firefox';
Sys.Browser.hasDebuggerStatement = true;
}
else if (navigator.userAgent.indexOf(' Safari/') > -1) {
Sys.Browser.agent = Sys.Browser.Safari;
Sys.Browser.version = parseFloat(navigator.userAgent.match(/ Safari\/(\d+(\.\d+)?)/)[1]);
Sys.Browser.name = 'Safari';
}
else if (navigator.userAgent.indexOf('Opera/') > -1) {
Sys.Browser.agent = Sys.Browser.Opera;
}

 

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-07-01 09:28 xjb 阅读(52) | 评论 (0)编辑

2009年6月30日 #

原文地址:How to create an IIS Virtual Directory from within Visual Web Developer

以下的步骤介绍如何在Visual Web Developer里创建IIS的虚拟目录(Virtual Directory)。当然,IIS已经被安装。

http://www.watch-life.net/visual-studio/create-an-iis-virtual-directory-from-within-visual-web-developer.html

1、创建一个“网站项目”:文件+新建+网站

2、在“新建网站”对话框里,单击“浏览”按钮,打开“选择位置”对话框

Choose Location

3、选择“本地IIS”标签页。

4、在对话框的右上角有个“创建虚拟目录”图标,单击这个图标,打开“新建虚拟目录”对话框,输入别名和完整的物理路径。

New Virtual Directory

5、在“选择位置”对话框里,也可以删除虚拟目录。在“新建虚拟目录”右边是删除虚拟目录的图标。在目录树里选择一个虚拟目录,单击删除图标,出现确认对话框,如果你选择“是”,将删除虚拟目录。

不必打开就可以创建虚拟目录,在新建网站的同时也把发布的虚拟目录建好了,水到渠成,很方便。如果在新建Asp.net项目的时候没有创建虚拟目录,也可以右键单击项目,在上下文菜单里选择“属性”,在属性对话框里选择web标签页,选择“本地IIS web 服务器”,也可以来创建虚拟目录。

 

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-06-30 09:21 xjb 阅读(65) | 评论 (0)编辑

2009年6月29日 #

原文地址:New Style builder can be invoked from various other tool windows in Visual Web Developer

在上一篇文章中介绍了“Visual Web Developer 2008中新的样式生成器”。其实有三个入口点可以打开样式生成器的窗体,你可以从IDE的下面三个位置打开它:

http://www.watch-life.net/visual-studio/new-style-builder-can-be-invoked-from-various-other-tool-windows-in-visual-web-developer.html

CSS属性窗口:通过菜单“视图+css属性”打开属性窗口,单击任何一个“应用的规则”,右键打开上下文菜单,选择“新建样式”选项,如下图所示:

CSS Properties

管理样式窗口:通过菜单“视图+管理样式”打开管理样式窗口,如下图所示有个“新建样式”的选项:
Manage Styles

在 CSS样式列表的上下文菜单上也有这个选项。

应用样式窗口:通过菜单“视图+应用样式”打开应用样式窗口,如下图所示有个“新建样式”的选项,同样在“选择应用的样式”里的样式列表的上下文菜单中也有这个选项

Apply Styles

打开“样式生成器”地方可真多呀,几乎在你用到样式管理的窗口都可以来调用。

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-06-29 09:14 xjb 阅读(58) | 评论 (0)编辑

2009年6月26日 #

Google 断网事件已经过去24小时了 。国内电信运营商通过使用DNS劫持使的一些境外服务仍然无法服务,比如我所在的电信宽带网络现在仍然无法正常访问google docs(google 文档)。
dns

下面有两个临时的解决方法:
1、使用境外的dns服务比如OpenDNS
设置方法:开始菜单—设置--网络连接-本地连接,打开“本地连接”属性,选择“常规”选项卡,打开“Interner协议(TCP/IP)”的属性页。
dns2

选择“使用下面的dns服务地址”项,“首选dns服务器”和“备用dns服务器”分别输入:208.67.222.222 和208.67.220.220。

我使用的操作系统是windows2003,如果你使用是xp的话,打开“Interner协议(TCP/IP)”的属性页的方法会有一点点差异。

2、修改host文件
在C:\WINDOWS\system32\drivers\etc目录下(如果你的系统盘不是c盘请更换相应的盘符)找到名为“hosts”文件,用“记事本”打开,在里面加入如下内容:


209.85.139.9 a.l.google.com
74.125.95.9 g.l.google.com
66.249.93.9 d.l.google.com
72.14.235.9 f.l.google.com
209.85.137.9 e.l.google.com
74.125.45.9 b.l.google.com
64.233.161.9 c.l.google.com
209.85.171.100 cg-in-f100.google.com;www2-china.l.google.com; www-china.l.google.com
66.249.89.104 jp-in-f104.google.com;googlemail.l.google.com
66.249.89.83 jp-in-f83.google.com

然后在“运行”下”输入ipconfig /flushdns" 点击“确定”即可。

为什么说是临时的,因为我也不知道将来什么时候让gfw给封了。

 

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-06-26 09:18 xjb 阅读(38) | 评论 (0)编辑

2009年6月25日 #

2009年6月24日,晚,22点,我习惯性打开电脑,上google reader看看订阅的博客过去一周新文章,突然发现打不开google reader了,再打开gmail,也打不开,心里预感可能是不是整个google.com都出问题了,上twitter一看,满世界的人都在说google.com的所有服务都无法访问了。

google reader 和 gmail 是我用的最多的google服务,突然不能使用这些服务,还真有点不适应,还好我的gmail里的邮件都是保存在本地的foxmail里面了。我想一定有很多人比我更不适应,聊天用Gtalk,相册用Picasa,打字用Google拼音,网站统计用Google Analytics,浏览器用Google Chrome..... 这样服务还可以列很长一串。一不留神,你会发现google已经深深影响我们的生活,我们似乎也越来越依赖google提供的这些服务。

这次“google门”事件再次提醒了我,当你对一件事务过分依赖后,后果就会很严重。 假如我的生活中失去Google.com,其实也没什么,大不了断了网,关了电脑,静静地看看书。

 

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-06-25 09:07 xjb 阅读(110) | 评论 (0)编辑

2009年6月24日 #

原文地址:Visual Web Developer 2008 has a New Style Builder Dialog

Visual Studio 2008里有个新的样式生成器对话框(窗体)。使用此对话框生成样式,也可以在同一时间预览。可以为一个创建样式定位给当前页面或现有的外部样样式表或新的外部样式表。可以创建基于ID的、基于元素的、内嵌的、基于类的的样式。样式有综合选择器。

http://www.watch-life.net/visual-studio/visual-web-developer-2008-has-a-new-style-builder-dialog.html

通过菜单:格式+新建样式打开“新建样式”对话框,也可以通过"管理样式"和“应用样式”工具窗口来打开它。

对话框如下图所示:

New Style

关于对话框里的各个选项:

定义位置:你可以定义新的样式创建在当前页面,现有的样式表,新的样式表。
选择器:你可以自己输入或者从下拉框选择,比如使用联级选择器,或从下拉框中选择联级样式。
将新样式应用于文档选择内容:勾选这个选项,新样式将会文档选择的内容被应用。
类别:点击每个类别时,右边就会打开相关的属性。任何设置了属性的类别都会以粗体方式显示。如上图所示,Font,Background和Border类别都是以粗体方式显示,是因为他们的一部分属性已经被设置。
URL:只有当你在“定义位置”中选择“现有样式表”时,这个选项才需要设置,应该标示出css文件的路径。

现在如果你想为一个按钮控件创建样式,所有你可以做的就是在设计中选中这个按钮,打开“新建样式”对话框,设置你需要的属性,预览、点“应用”按钮。

样式生成器对于css样式新手来说非常有用,用它来在Asp.net完成常规的样式编码绝对手到擒来。当然,如果你想实现非常库的效果,比如“圆角”效果,恐怕就需要更多的css知识了。

 

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-06-24 09:19 xjb 阅读(65) | 评论 (0)编辑

2009年6月19日 #

原文地址:How to create an ASP.NET Web User Control and include it in your web page

在上一篇创建web用户控件并包含在web页面里中介绍了如何创建一个web用户控件和在页面使用它。注意:在页面拖拽一个web用户控件后,VS 会在页面上方添加 @Register指令。

http://www.watch-life.net/visual-studio/register-your-asp-net-web-user-controls-in-web-config.html

如果将来移动了web用户控件的位置的话,那么在每个使用了这个web用户控件的页面都需要修改注册指令,这是件很麻烦的事,如果把注册指令移到web.config文件里,那么修改文件的路径就会变得容易多了,任何位置改变更新在一个位置就可以完成。在Web.Config里进行如下输入:


<configuration>
<system.web>
<pages>


<controls>
<add tagPrefix="MyControl" src="~/Controls/WebUserControl.ascx"


tagName="MyButton"/>
</controls>


</pages>
</system.web>
</configuration> 

 

 


 

一旦web config如上述配置后,就可以在(项目)的任何页面来使用这个web用户控件了。


<body>
<form id="form1" runat="server">
<MyControl:MyButton ID="MyUserControl" runat="server" />
</form>
</body>

 

 

 

以前还真不知道web用户控件居然可以在Asp.net 的web.config里面注册,这个功能设计很很人性化,考虑真周到。

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-06-19 09:19 xjb 阅读(62) | 评论 (0)编辑

2009年6月18日 #

原文地址: How to create an ASP.NET Web User Control and include it in your web page

使用Visual Web Developer,创建一个web用户控件(Web User Control)和创建一个asp.net的页面一样简单。

步骤如下:
http://www.watch-life.net/visual-studio/how-to-create-an-asp-net-web-user-control-and-include-it-in-your-web-page.html

1、打开一个已经创建的用来添加一个用户控件的网站项目。、

2、右键单击项目,在上下文菜单选择“添加+新建项”,打开“新建项”对话框,里面有Visual Studio已安装模板的列表。如下图所示,选择“web用户控件”

Web User Control

3.点击添加,把web用户控件添加到网站项目中,你可以在设计视图中打开控件,然后从工具箱添加控件到web用户控件。
4.除了以.ascx作为扩展名,Asp.net 的web用户控件看起来和Asp.Net Web页面很相似,同时,有一个@Control的指令,而不是@Page指令,@Control指令看起来就像下面的这种

<%@ Control Language="VB" AutoEventWireup="false" CodeFile="WebUserControl.ascx.vb" Inherits="WebUserControl" %>

 
5、在一个web页面注册web用户控件很简单,在设计模式下从解决方案管理器中拖拽web用户控件到需要的页面即可,Visual Studio会自动在页面上注册web用户控件,在页面上添加一个@Register指令,如下所示:
<%@ Register src="WebUserControl.ascx" tagname="WebUserControl" tagprefix="uc1"%>

 

 

tagname 属性是控件的名字,tagprefix用来确定web用户控件的独特命名空间,Src 属性是用户控件的路径。

6、Visual Studio 也通过如下代码在页面上添加一个用户控件:

 

<uc1:WebUserControl ID="WebUserControl1" runat="server" />

 

 

注意:TagName和TagPrefix被用作控件的唯一标志。

更多文章见:守望轩[http://www.watch-life.net/]

posted @ 2009-06-18 09:15 xjb 阅读(62) | 评论 (0)编辑