17
2014
12

Exception of type 'System.OutOfMemoryException' was thrown

ASP.net服务器出现如下错误:

 

 Server Error in '/' Application.

Exception of type 'System.OutOfMemoryException' was thrown.

09
2014
12

div显示在object、embed之上~



<object height="600" width="940" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,19,0" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000">
      
<param value="/swf/park/1/1303872749292.swf" name="movie">
      
<param value="high" name="quality">
      
<param value="always" name="allowScriptAccess">
      
<param value="internal" name="allowNetworking">
     
 <param value="transparent" name="wmode">
      
<embed height="600" width="940" wmode="transparent" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" allownetworking="internal" allowscriptaccess="always" quality="high" src="/swf/park/1/1303872749292.swf">
    
</object>

09
2014
12

DIV 在object之上, div 覆盖object

<html> 
<head> 
<meta   http-equiv= "Content-Type "   content= "text/html;   charset=gb2312 "> 
<meta   name= "GENERATOR "   content= "Microsoft   FrontPage   4.0 "> 
<meta   name= "ProgId "   content= "FrontPage.Editor.Document "> 
<title> 简单菜单 </title> 
<!-- 
提供定位函数,用iframe作载体,不会被select挡住 
By   Fason(2003-5-21) 
--> 
<style id=s> 
#div1{ 
position:absolute; 
z-index:100; 
width:100; 
height:130; 
background-color:#d2e8ff; 
border:1   solid   black; 

div{cursor:hand;font-size:12px;} 
a{text-decoration:none;color:red;font-size:12px} 
</style> 
</head> 
<body> 
<script> 
function   window.onload(){ 
var   shtml=div1.innerHTML; 
var   ifm=document.createElement( " <iframe   frameborder=0   marginheight=0   marginwidth=0   hspace=0   vspace=0   scrolling=no> </iframe> ") 
ifm.style.width=div1.offsetWidth 
ifm.style.height=div1.offsetHeight 
ifm.name=ifm.uniqueID 
div1.innerHTML= " " 
div1.appendChild(ifm) 
window.frames[ifm.name].document.write(s.outerHTML+ " <body   leftmargin=0   topmargin=0> "+shtml   +   " </body> ") 
}
function   show(){ 
with(document.all.img1){ 
x=offsetLeft; 
y=offsetTop; 
objParent=offsetParent; 
while(objParent.tagName.toUpperCase()!=   "BODY "){ 
x+=objParent.offsetLeft; 
y+=objParent.offsetTop; 
objParent   =   objParent.offsetParent; 

y+=offsetHeight-1 

with(document.all.div1.style){ 
pixelLeft=x 
pixelTop=y 
visibility= ' ' 


function   hide(){ 
document.all.div1.style.visibility= 'hidden '
function   aaa() 

window.alert( 'ok ') 


</script> 
<img   id=img1   onmouseover= "show() "   onmouseout= "hide() "   src= "ie.gif "> <br> 
<object id="nmclayer" height="410" width="624" classid="clsid:9EBADD82-B1AB-49eb-843F-D0A445DF7B46">
</object>
<div   id=div1   onmouseover= "style.visibility= ' ' "   onmouseout= "style.visibility= 'hidden ' "   style= "visibility:hidden; "> 
<div   href= "http://www.csdn.net "   onmouseover= "style.backgroundColor= 'highlight'"   onmouseout= "style.backgroundColor=''"   onclick= "parent.aaa() "> 中国程序员 </div> 
<div   href= "http://www.sohu.com"   onmouseover= "style.backgroundColor='highlight'"   onmouseout= "style.backgroundColor=''"   onclick= "window.open(href) "> sohu </div> 
</div> 
</body> 
</html 


03
2014
12

silverlight如何读取服务器上的xml文件

 

wcReader = new WebClient();
            wcReader.OpenReadAsync(new Uri("PermissionConfig.xml", UriKind.Relative));
            wcReader.OpenReadCompleted += (s, e) =>
            {
                using (StreamReader reader = new StreamReader(e.Result))
                {
                    PermissionXML = reader.ReadToEnd();
                }
            };

26
2014
11

Silverlight多选下拉框控件

   <UserControl.Resources>
        <Style x:Key="comboxStyle1" TargetType="ComboBoxItem">
            <Setter Property="Background" Value="Yellow"/>
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="ComboBoxItem">
                        <CheckBox Content="{TemplateBinding Content}" Click="CheckBox_Click"></CheckBox>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </UserControl.Resources>
 
    <Grid x:Name="LayoutRoot" Background="White">
        <ComboBox x:Name="chkTest"  HorizontalAlignment="Left" Width="101" Height="50" DropDownOpened="chkTest_DropDownOpened" DropDownClosed="chkTest_DropDownClosed">
            <ComboBoxItem Style="{StaticResource comboxStyle1}" Content="AA"/>
            <ComboBoxItem Style="{StaticResource comboxStyle1}" Content="BB"/>
            <ComboBoxItem></ComboBoxItem>
        </ComboBox>
 
    </Grid>

09
2014
11

js判断文件格式及大小

 

//判断照片大小
function getPhotoSize(obj){
   photoExt=obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();//获得文件后缀名
   if(photoExt!='.jpg'){
       alert("请上传后缀名为jpg的照片!");
       return false;
   }
   var fileSize = 0;
   var isIE = /msie/i.test(navigator.userAgent) && !window.opera;            
   if (isIE && !obj.files) {          
        var filePath = obj.value;            
        var fileSystem = new ActiveXObject("Scripting.FileSystemObject");  
        var file = fileSystem.GetFile (filePath);              
        fileSize = file.Size;        
   }else {  
        fileSize = obj.files[0].size;    
   }
   fileSize=Math.round(fileSize/1024*100)/100; //单位为KB
   if(fileSize>=10){
       alert("照片最大尺寸为10KB,请重新上传!");
       return false;
   }
}


前台调用页面:

09
2014
11

Silverlight利用XamlReader 动态加载XAML对象

 Silverlight的界面元素都是通过直接读取XAML文件的内容来呈现的,但是在某些时候你并不能预先设计好所有的XAML元素,而是需要在程序运行的过程中动态地加载XAML对象,即是,如果希望一个XAML界面中的元素是由用户实时交互产生的,那么可以使用XamlReader.Load方法来实现。

 

<UserControl x:Class="XV.MainPage"
    xmlns="
http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="
http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="
http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="
http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

28
2014
10

WCF Service 配置文件注释

 VS ->Tools->WCF Service Configuration Editor, 这个工具的好处是不用查MSDN确定是否拼写是否正确,都有提示和各个节点的定义.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.ServiceModel>
        <!-- services 元素包含应用中驻留的所有service的 配置要求 -->
        <services>
             <!-- 每个服务的配置属性说明:
               name - 指 定这个service配置是针对的那个服务,为 一个实现了某些Contract的服务类的完全
                 
   
限定名
(名称空间.类型名),ServiceHost载入一个服务后,会 到配置文件中的 下找有
                 
   
没有
name属性跟服务匹配的 的配置
               behaviorConfiguration - 指定在下的一个的name,这个特定给这个service制定了一些行为,
                     
比 如服务是否允许身份模拟
-->
             <service name="名称空间.类型名" behaviorConfiguration="behavior">
                  <host>
                      <baseAddresses>
                           <!-- 在此可以定义每种传输协议的baseAddress, 用于跟使用同样传输协议Endpoint定义的相对地
                   址组成完整的地址,但是每种传输协议只能定义一个baseAddress。HTTP的baseAddress同时是service
                   对外发布服务说明页面的URL-->
                           <add baseAddress="http://address" />
                      </baseAddresses>
                      <timeouts></timeouts>
                  </host>
                  <!-- 每个服务可以有多个Endpoint, 下面 元素对每个Endpoint分别进行 配置
                属性说明:
                address - 指 定这个Endpoint对外的URI,这个URI可以是个绝对地址,也可以是个相对于baseAddress的
                          相对地址。如果此属性为空,则这 个Endpoint的地址就是baseAddress
                binding - 指定这个Endpoint使用的binding,这个banding可以是系统预定义的9个binding之一,
                          比如是basicHttpBinding,也可以是自定义的customBinding。binding决定了通讯 的类型、
                          安全、如何编码、是否基于session、是否基于事务等等
                contract - 指定这个Endpoint对应的Contract的全限定名(名称空间.类型名),这个Contract应 该被
                           service元素的name指定的那个service实现
                bindingConfiguration - 指 定一个binding的配置名称,跟下面同 类的name匹配
                   behaviorConfiguration - 指 定这个endpoint的behavior, 指向 下的同样配置名称的
                name - Endpoint的名称,可选属性,每个Contract都可以有多个Endpoint,但是每个Contract对应的
                       多个Endpoint名必须是唯一的-->
                  <endpoint address="URI" binding="basicHttpBinding" contract="Contract全限定名" bindingConfiguration="binding" behaviorConfiguration="String" name="">
                      <!-- 用户定义的xml元素集合, 一般用作SOAP的header内容-->
                      <headers>
                           <!-- 任何xml内容 -->
                      </headers>
                  </endpoint>
             </service>
        </services>
        <bindings>
             <!-- 指定一个或多个系统预定义的binding, 比如,当然也可以指定自定义的customBinding,
            然后在某个指定的binding下建立一个或多个配置,以便被Endpoint来 使用这些配置 -->
             <basicHttpBinding>
                  <!-- 某一类的binding的下 面可能有多个配置,binding元素的name属 性标识某个binding-->
                  <binding name="binding">
                  </binding>
             </basicHttpBinding>
        </bindings>
        <!-- 定义service和Endpiont行为-->
        <behaviors>
             <!-- 定义service的行为-->
             <serviceBehaviors>
                  <!-- 一个或多个系统提供的或定制的behavior元 素
                属性说明:
                name - 一个behavior唯一标识,元素下的behaviorConfiguration属 性指向这个name-->
                  <behavior name="此Behavior名称">
                      <!-- 指定service元数据发 布和相关信息
                    属性说明:
                    httpGetEnabled - bool类型的值,表示是否允许通过HTTP的get方 法获取sevice的WSDL元数据
                    httpGetUrl - 如 果httpGetEnabled为true, 这个属性指示使用哪个URL地址发布服务的WSDL,
                                 如果这个属性没有设置,则使用服务的HTTP类型的baseAddress后面加上?WSDL-->
                      <serviceMetadata httpGetEnabled="true" httpGetUrl="http://URI:port/address" />
                      <!--指定验证服务端的凭据-->
                      <serviceCredentials>
                           <!--指定服务端的证书
                        属性说明:
                        storeName - 证 书的存储区,可能值为:AddressBook,AuthRoot,CertificateAuthority
                                    Disallowed,My,Root,TrustedPeople,TrustedPublisher
                        storeLocation - 证书存储位置,可能值为:CurrentUser,LocalMachine
                            x509FindType - 查找证书的方式,可能的值:FindBySubjectName,FindByThumbPrint,FindByIssuerName......
                            findValue - 对应查找方式的要查找证书的值                  -->
                           <serviceCertificate storeName="存储区" storeLocation="存储位置" x509FindType="FindBySubjectName" findValue="server1" />
                      </serviceCredentials>
                  </behavior>
             </serviceBehaviors>
             <!-- 定义Endpiont的行为-->
             <endpointBehaviors>
                  <!-- 一个或多个系统提供的或定制的behavior元 素
                属性说明:
                name - 一个behavior唯一标识,元素下的behaviorConfiguration属 性指向这个name-->
                  <behavior name="此Behavior名称">
                      <!--指定客户端的凭据-->
                      <clientCredentials>
                           <!--指定客户端的证书
                        属性说明:
                        storeName - 证 书的存储区,可能值为:AddressBook,AuthRoot,CertificateAuthority
                                    Disallowed,My,Root,TrustedPeople,TrustedPublisher
                        storeLocation - 证书存储位置,可能值为:CurrentUser,LocalMachine
                            x509FindType - 查找证书的方式,可能的值:FindBySubjectName,FindByThumbPrint,FindByIssuerName......
                            findValue - 对应查找方式的要查找证书的值                  -->
                           <clientCertificate storeName="存储区" storeLocation="存储位置" x509FindType="FindBySubjectName" findValue="Client1" />
                           <serviceCertificate>
                                <authentication certificateValidationMode="None" />
                           </serviceCertificate>
                      </clientCredentials>
                  </behavior>
             </endpointBehaviors>
        </behaviors>
        <!-- 包含客户端跟服务端连接使用到的Endpoint的 配置 -->
        <client>
             <!-- 每个客户端Endpoint设置
            属性说明:
            address - 对 应到服务端这个Endpoint的address
            binding - 指定这个Endpoint使用的binding,这个banding可以是系统预定义的9个binding之一,
                      比如是basicHttpBinding
            contract - 指 定这个Endpoint对应的Contract的 全限定名(名称空间.类型名)
            name - Endpoint的配置名,客户端代理类的构造方法中的endpointConfigurationName对 应到这个name
            bindingConfiguration - 指 定客户端binding的具体设置,指向元 素下同类型binding的name
              behaviorConfiguration - 指定这个endpoint的behavior,指向 下的同样配置名称的 -->
             <endpoint address="URI" binding="basicHttpBinding" bindingConfiguration="binding" behaviorConfiguration="String" contract="Contract全限定名" name="endpoint配置名" >
                  <!-- 用于客户端验证服务端身份,可选以下一种方式验证服务端-->
                  <identity>
                      <userPrincipalName></userPrincipalName>
                      <servicePrincipalName></servicePrincipalName>
                      <!--如果客户端验证是windows,这里指定DNS名;如果是Certificate, 这里指定证书subject name-->
                      <dns></dns>
                      <rsa></rsa>
                      <!--指定服务端证书的公钥
                           属性说明:
                           encodedValue - 服务端证书的公钥的base64编码,用于加密用户名和 密码-->
                      <certificate encodedValue=""></certificate>
                      <!-- 用户指定在客户端证书存储区内的服务端证书
                        属性说明:
                        storeName - 证 书的存储区,可能值为:AddressBook,AuthRoot,CertificateAuthority
                                    Disallowed,My,Root,TrustedPeople,TrustedPublisher
                        storeLocation - 证书存储位置,可能值为:CurrentUser,LocalMachine
                            x509FindType - 查找证书的方式,可能的值:FindBySubjectName,FindByThumbPrint,FindByIssuerName......
                            findValue - 对应查找方式的要查找证书的值                  -->
                      <certificateReference storeName="存储区" storeLocation="存储位置" x509FindType="FindBySubjectName" findValue="Client1" />
                  </identity>
             </endpoint>
        </client>
    </system.ServiceModel>
</configuration>

28
2014
10

WCF传输大数据的设置

在从客户端向WCF服务端传送较大数据(>65535B)的时候,发现程序直接从Reference的BeginInvoke跳到EndInvoke,没有进入服务端的Service实际逻辑中,怀疑是由于数据过大超出限定导致的。
 
问题是我实际发送的数据是刚刚从WCF服务端接收过来的,一来一去,数据量差别并不大。
 
然后发现,在客户端和服务端实际使用的是不同的配置,对于客户端,在添加ServiceReference时自动生成的ServiceReferences.ClientConfig文件中system.serviceModel节下有这样的设置:

    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
              <binding name="BasicHttpBinding_IDiagramService" sendTimeout="00:10:00" maxBufferSize="2147483647"
                  maxReceivedMessageSize="2147483647"  >
                <security mode="None" />
              </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="
http://localhost:8081/DiagramService.svc"
                binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDiagramService"
                contract="DiagramService.IDiagramService" name="BasicHttpBinding_IDiagramService" />
        </client>
    </system.serviceModel>


在Binding里指定了最大缓存字节数和最大接受字节数,相当于2G的大小!除非传一整套连续剧,一般是够用了。
 
而在服务端,Web.config文件里,Bindings节是空的,而Service也没有指定bindingConfiguration属性,那么它们采用的就是默认的65535的大小。
 
问题找到,解决就比较容易了:
 
在Bindings节添加新的Binding设置,指定最大接受数据:
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_IDiagramService" sendTimeout="00:10:00" maxBufferSize="2147483647"
                  maxReceivedMessageSize="2147483647" />
      </basicHttpBinding>
    </bindings>
之后给相应的Service指定bindingConfiguration属性:

    <services>
      <service name="glTech.Service.DiagramService">
        <endpoint address=""  binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IDiagramService"
                  contract="glTech.Service.IDiagramService" name="BasicHttpBinding_IDiagramService"  />
      </service>
    </services>


这样就可以从客户端发送足够大的数据了。
 

.net默认只能传4M的文件,所以尽管设定了Wcf两端的配置,还是超不出.net的限定,所以如果要传输大文件,还需要在System.Web节下加上

    <httpRuntimemaxRequestLength="102400" />
 
这里的单位是KB,这样就可以传100M的文件了。当然,这么大的文件,最好还是分段传输比较好。

16
2014
10

Silverlight中TreeView使用CheckBox实现多选功能

        <controls:TreeView x:Name="treeview_1" Height="Auto" Width="*" Margin="10" BorderThickness="0" HorizontalAlignment="Left"
                                    VerticalAlignment="Top"></controls:TreeView>