RSS 2.0 Feed
DOTNET
摘要:说明: CButton:在Blend 2中制作了一个ColorAnimation的Button,在Orcas中添加了一个DoubleAnimation HelloWorld:分别使用XAML,C#,JavaScript(两种方式)的Hello World JSInteration:JavaScript和托管代码进行交互,包括事件监听处理、方法调用 ShowHello+ShowHelloWeb:一个SL项目,一个Web Site,Web Site Link SL项目。SL + Ajax   下载:http://gadgets.chinacars.com/sl/sl.rar    ...[阅读全文]

posted @ | Feedback (3) | Filed Under [ DOTNET ]

摘要:做了多个SL Project,其间多次发现无法Debug,即设置了BreakPoint但是无法Break,由于之前对此没有太重视,所以一直没有考虑这件事情,今天开始准备周五的提纲了才发现这是个必须找出原因的问题,所以花了点事情研究了一下,终于找到了原因所在:我的default browser是Maxthon 2,而Maxthon是单一Process,打开一个页面只是建一个Thread而已(或者从threadPool中取一个,这个没有研究过),当我每次Debug SL Project时,我的Maxthon都是打开状态,而他又是default browser,,结果造成VS Debuger打开的不是一个独立的Process,没有Pid,所有VS Debuger没有权限去Break。从这个原理看,所有使用multi-tab的浏览器都会造成这个问题。包括firefox。  ...[阅读全文]

posted @ | Feedback (9) | Filed Under [ DOTNET ]

摘要:有朋友的机器先装的Vista,然后直接安装了VS 2008 Beta 2,由于Vista默认不安装IIS 7,当部署Web App时才去安装IIS 7,结果访问站点就出现500.19错误:HTTP Error 500.19 - Internal Server Error 配置错误: 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的。 配置文件: \\?\*\web.config 配置源:   145:     </modules>  146:     <handlers>  147:       <remove name="WebServiceHandlerFactory-ISAPI-2.0"/> 出现这个错误是因为IIS 7 采用了更安全的Web.Config管理机制,默认情况下会锁住配置项不允许更改。要取消锁定可以运行命令行:“%windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers” 详细说明:http://www.iis.net/articles/view.aspx/IIS7/Managing-IIS7/Delegation-in-IIS7/Delegating-Permission-in-Config/How-to-Use-Locking-in-IIS7-Configuration   ...[阅读全文]

posted @ | Feedback (3) | Filed Under [ DOTNET ]

摘要:WPF/E终于得到了一个符合RIA定位的、响亮的、够酷够眩的名字——SilverLight,银光?人家Flash是闪光,你是银光,怪怪的。某位兄台的‘闪亮’,也有给滴眼液打广告的嫌疑阿,难道因为是周董做的广告? 作为曾经Longhorn的三剑客,Avalon、Indigo还有WinFS  在MS 实用主义的驱动下,如今都找到了自己的正确归宿(个人观点),而Avalon、XAML几经发展、细化,终于发展成为涵盖Windows程序和Web应用的UI Solution。个人认为WPF和SilverLight本是一体,但是目前的Windows程序和互联网应用区别较大,为了更好的适应目前的状况,SilverLight才得以独立登场,以其鲜明的特点、先进的理念在RIA的大潮中搏杀。 认识RIA大概在02、03年左右(Applet暂不算,虽然他具有了RIA的很多特点),当时的MM突破了原来Flash的矢量Internet动画的定位,通过其不断的创新开发了一系列interactive技术,如Flash Remoting、Flash调用WebService、FlashCom、Flex,成功的将Flash由一个动画创作与展示平台变成了一个交互式RIA&Rich Media应用平台,但是只能说在Rich Media领域内MM很成功(FLV统治了目前的web 2.0 视频网站)。对于更广阔的RIA市场,其成果有限,大力推广的Flex(支持cf、java、.net)也没有太多的作为。试析其原因,个人感觉还是由于Flash本身在动画方面的巨大成功影响了其RIA的发展。由于谁也无法舍弃已经获得的巨大成功,Flash就一直无法脱离Designer的世界而进入Programer的世界,我想大家一听到Flash,第一反应应该是:“奥,那是美工的活!”。而众所周知,Application是由Programer主宰的世界,你再Rich再闪也改变不了这个真理。注:此句话绝对没有轻视Designer的意思,只是分工不同,各自的角度不同而已。 说道RIA,插一句关于.Net的前辈和老对手Java的。Sun也是最新推出了JavaFX来征战RIA的大市场,OpenSource!.从表现形式上看,和很久之前的java star没什么区别。不过其本质发生了巨大变化,结合了VRML的语法,加上了Java的script控制,开发比awt,swing简单不少。看来还是从Flex那里学了不少。JavaFx在RIA这个大市场上要想分一杯羹,目前看还是有难度,主要还是受JRE的限制,毕竟不像MS控制了PC的操作系统。不过依靠其OpenSource和多平台,其在各种设备上还是有竞争力的,不过呢,做过KJava的兄弟们都知道这个跨平台也不是那么Free。    ...[阅读全文]

posted @ | Feedback (10) | Filed Under [ DOTNET ]

摘要:将asp.net应用程序迁移到Load Balance和NAS环境   1.  权限控制 a)         将Web Server和NAS加入同一个Domain(AD)中,如DomainWeb。当然也可以使用所有Web Server与NAS的某个帐号的密码相同来进行欺骗。但是这样在管理上会比较复杂。 b)        在域中创建一个专用于asp.net程序运行的帐号(替代本地的ASPNET),如ASPNETOwner。 2.  NAS目录与权限 a)         在NAS上设置一个共享目录,如\\nas\upload,确保DomainWeb\ASPNETOwner对NAS的磁盘和共享都有写权限。 3.  Web Server目录与权限 a)         保证DomainWeb\ASPNETOwner对本地Web程序目录的访问权限。 b)        保证DomainWeb\ASPNETOwner可以写C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files目录。 c)        保证DomainWeb\ASPNETOwner可以写系统的临时目录(为满足一些特殊情况)。 4.  程序处理 a)         确保不使用Session(为了保证Load Balance算法的多样性),如果必须使用则可以使用State Server或数据库存储Session,但是强烈建议不要使用Session。 b)        统一Cookie和ViewState的Key(保证先后访问不同Web Server可以正常的解密ViewState),因为默认的是Key是各服务器自动生成。 c)        更改程序的web.config文件,设置Identity,使用DomainWeb\ASPNETOwner和密码运行asp.net程序。       Web.config相关部分示例:   <system.web> <machineKey        validationKey= "250B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE"         decryptionKey= "1A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"         validation="SHA1"            />    <identity impersonate="true" userName="DomainWeb\ASPNETOwner" password="Password"/>        <httpRuntime maxRequestLength="10240"  useFullyQualifiedRedirectUrl="true" appRequestQueueLimit="500" executionTimeout="100"/></system.web>    ...[阅读全文]

posted @ | Feedback (22) | Filed Under [ DOTNET ]

摘要:日前,一个Web应用在压力测试时发现返回了大量的503,经过研究,发现是由于.net 1.1中将每个Web App的 Request Queue Limit默认设为了100,当访问量很大时(LoadRunner : 1000VUser),由于Queue Limit太小,导致大量的访问被丢弃,返回了503错误。 Machine.config中的设置: <httpRuntime             executionTimeout="90"            maxRequestLength="4096"            useFullyQualifiedRedirectUrl="false"            minFreeThreads="8"            minLocalRequestFreeThreads="4"            appRequestQueueLimit="100"            enableVersionHeader="true"        /> appRequestQueueLimit值需要根据服务器环境、程序特点等综合考虑才能得到一个比较合适的值,不能简单的将此值设置很大,因为工作进程会为每个应用程序维护一个Request Queue,Queue的长度固定,盲目设大将造成资源浪费与性能降低。 较好的方式是在应用上线(测试)前设置一个较大值,然后观察Perfmon中Request Queue的数值,然后根据实际访问的最大值加上一个缓冲量作为appRequestQueueLimit,如果是一台服务器多个应用,那么就需要根据每个应用的压力不同来设置(Web.config中)。 需要注意的是,.net可以设置多处Request Queue值,Machine.config中<processModel节也有一个process级别的Request Queue,默认为5000,requestQueueLimit="5000" 。不过这个设置在IIS6(本地模式,native mode,即采用Application Pools)时,将被忽略,针对进程的设置,需要在MMC中设置Application Pool的属性。    ...[阅读全文]

posted @ | Feedback (8) | Filed Under [ DOTNET ]

摘要:自定义Page集类可以带来很多好处,如统一处理Cookie,安全性,参数等。不过在继承System.Web.UI.Page实现自己的BasePage时需要注意一点:谨慎的处理构造器(Constructor)中涉及的代码。如果疏忽了这点,可能会导致你在Vs.Net中无法所见即所得的编辑Aspx页面,打开页面时将抛出以下错误,你只能看到Html代码界面。   导致这一错误的最大可能的原因就是你在BasePage的构造器里使用了HttpContext的内容。而Vs.Net在显示所见即所得的Aspx页面时会初始化你的BasePage类,这时候如果使用了Request,Response等类时,由于HttpContext并不存在(因为不是在IIS环境中,没有PageFactory传递过来Http上下文),所以在初始化类时就抛出了NullReferenceException。 为了解决此问题,最好将访问HttpContext的代码放到OnInit中,如下:   protected override void OnInit(EventArgs e)  {      base.OnInit (e);      HttpCookieCollection cookies = HttpContext.Current.Request.Cookies;  } 这一override方法指示在PageHandler阶段被首先调用,而Vs.Net显示页面时并不会调用此方法,所以不会产生NullReferenceException。 如果你确实需要在构造器中进行某些Field的初始化等工作,这时又需要使用Request等内容,那么就需要先判断HttpContext是否为Null。如下:  public class BasePage : Page {    public BasePage()    {         if(HttpContext.Current != null)         {             HttpCookieCollection cookies = HttpContext.Current.Request.Cookies;         }     }  }  ...[阅读全文]

posted @ | Feedback (4) | Filed Under [ DOTNET ]

摘要:   有一个Web项目,Web.Config中requestEncoding和responseEncoding都是gb2312,而从数据库中取出的简介数据可能是中文和韩、日文混合的内容,这时候如果直接输出到页面上,其页面会出现乱码,其中的韩文内容无法正确显示。当然如果项目的编码都使用Utf-8的话将没有这个问题,但这个项目是一个老项目,为了尽量不要影响已有的程序,所以无法将编码改为Utf-8,只能在本页面上动脑筋。    经过研究,发现这个问题可以通过Html实体的方法解决。 对于Html实体请参考: Character entity references in HTML 4 HTML Document Representation 测试代码: Byte[] bComments = Encoding.UTF8.GetBytes("一ンブル????中文");   char[] cComments = Encoding.UTF8.GetChars(bComments);      StringBuilder charBuilder = new StringBuilder();      foreach(char c in cComments)   {    if(c > '\u0800')    {     charBuilder.Append("&#");     charBuilder.Append((int)c);    }     else    {     charBuilder.Append(c);    }   }   Response.Write(charBuilder.ToString()); 这段代码的作用是将所有的中文、韩文、日文字符通过硬编码输出成为html实体。而Html实体是不受ResponseEncoding和页面编码集影响的。 说明: \u0800 以上的为中、韩、日字符。 中文的范围:\u4e00 - \u9fa5,日文在\u0800 - \u4e00,韩文为\u9fa5以上。 这个方法仅仅是为了解决小范围问题,如果各位有更好的办法请指教。...[阅读全文]

posted @ | Feedback (6) | Filed Under [ DOTNET ]

摘要:.Net Beta2中消失的ObjectSpaces正式成为了过去,而DLinq从ObjectSpaces的灰烬出生了。DLinq是在分析了ObjectSpaces的反馈之后重新设计的ORM Solutions。 DLinq:.NET Language Integrated Query for Relational Data,DLinq和XLinq(for Xml)共同组成了.net 3.0的关键部分——LinQ(:.NET Language Integrated Query ),即语言级集成查询能力。 DLinq是在分析了ObjectSpaces的反馈之后重新设计的ORM Solutions,作为更先进的查询数据库得到对象并且持久化对象的方式,DLinq将不再使用ObjectSpaces的mapping文件方式,而是使用了attribute 来进行mapping的定义。当然现在也有一些采用attribute 方式的Solutions,如XPO:http://www.devexpress.com/Products/NET/XPO/。不过DLinq的第一大特点将是任何ORM方案难以匹敌的,那就是语言级别的查询集成。这是目前ORM阵营(无论是.net、java或者其他)中都难以做到的。毕竟Linq是Anders Hejlsberg在主导(猜测,因为Demo和Channel9 video都是他),而这也是.net 3.0的主要提升啊。 此文依据 Dinesh Kulkarni(Program Manager Visual C#,working on C# 3.0) http://blogs.msdn.com/dinesh.kulkarni/archive/2005/09/13/465089.aspx...[阅读全文]

posted @ | Feedback (6) | Filed Under [ DOTNET Database ]

摘要:1.实体类: [Table(Name="Customers")]public class Customer{public string CustomerID; public string City;} 使用Attribute定义ORM的关系,这样的好处是无需产生和维护大量映射文件。 [Table(Name="Customers")]public class Customer{[Column(Id=true)]public string CustomerID; [Column]public string City;} 通过Attribute自定义列,定义主键(PK)……    2.数据上下文          // DataContext takes a connection string DataContext db = new  DataContext("c:\\northwind\\northwnd.mdf"); // Get a typed table to run queriesTable<Customer> Customers = db.GetTable<Customer>(); // Query for customers from Londonvar q =from c in Customerswhere c.City == "London"select c; foreach (var cust in q)Console.WriteLine("id = {0}, City = {1}", cust.CustomerID, cust.City);             这个比较猛,直接写查询,from in where select都成了关键字。直接在对象上进行查询不再考虑数据库了。并且范型化了。             看到var,众位做过asp的兄弟是不是很亲切阿,这是动态语言(解释语言)的特性,变量定义时不定义类型,不过这里应该不是动态语言,应该是根据上下文在编译时确定类型的。   Northwind db = new Northwind("c:\\northwind\\northwnd.mdf"); var q =from c in db.Customerswhere c.City == "London"select c;          foreach (var cust in q)         Console.WriteLine("id = {0}, City = {1}",cust.CustomerID, cust.City);          简单写法。   public partial class Northwind : DataContext{   public Table<Customer> Customers;   public Table<Order> Orders;    public Northwind(string connection): base(connection) {}} 继承一下,表成了成员了。  3.关系定义   [Table(Name="Customers")]public class......[阅读全文]

posted @ | Feedback (17) | Filed Under [ DOTNET Database ]

Full DOTNET Archive