01
2014
07

Silverlight采用Socket通讯

Silverlight客户端的Socket都是异步的,这点很容易明白,另外就是,考虑到Silverlight是应用到Web上的,而Silverlight的Socket自然就有一些安全限制。
 
每一个请求到服务器端的新的Socket连接会话Silverlight都会先悄悄的用另一个Socket去请求策略文件,这是很多刚接触Silverlight Socket的人感到郁闷的地方,请求策略时,Silverlight会自己发送一个字符串<policy-file-request/>到服务器的943端口,然后你必须在服务器程序里接收该请求,分析是否是策略请求后,发送一个策略文件的字符串给客户端,客户端接收到策略文件后自己分析完后再发送程序员自己写的数据请求。
 
客户端的策略请求是自动发送的,策略文件的接收和分析也是自动的,是Silverlight自发工作的,不需要程序员手工写代码进行发送接收和分析。
 
但是,服务器端接收策略请求需要手工完成,程序员必须创建一个Socket监听943端口(该端口是固定的,客户端策略请求固定发送到该端口),然后分析请求过来的数据是否是策略请求,如果是的,那么就读取策略文件,再将该策略文件发送到客户端就可以了。
 
另外一个限制,Silverlight Socket 数据交换端口必须在4502-4534范围,也就是说,整个Socket将用到两个端口,一个是943用于策略请求,另一个是4502-4534范围的你指定的数据交换端口。
 
不管你的Socket代码是如何工作,第一次在连接之前,Silverlight都会发送策略请求,只有成功接收到服务器返回的策略文件后,你的Socket代码才能进行工作,所以在第一次连接的时候,实际上Silverlight是进行了两次Socket,第一次请求策略,成功才进行你的Socket,因此,服务器端必要监听两个端口,但是两个监听可以分开在两个线程上工作(两个线程,不是两个进程)。每个会话请求一次策略后,之后的请求就不会再请求策略了,所以他们不能是线性的工作,而是两个独立的监听,否则会阻塞。
 
我的服务器端的策略监听和数据监听是用的两个子线程运行,而MS的示例是用的异步方法,都是为了不相互阻塞,用MS的方式也许更有效率些,而我是为了让代码更容易理解。
 
客户端实现了将文本框的内容发送到服务器端,然后服务器收到后显示出来,然后发回一句字符串,关闭连接,客户端收到服务器端的信息后也关闭连接。

24
2014
06

UpdatePanel 的属性相关说明 及 UpdateMode刷新规则

 


一、相关说明

ChildrenAsTriggers
当 UpdateMode 属性为 Condititonal 时, UpdatePanel 中的子控伯的异步回送是会引发 UpdatePanel 的更新 

RenderMode
表示 UpdatePanel 最终呈现的 HTML 无缘, Block(默认)表示<div>, lnline 表示<span> 

Triggers
 用来引起更新的事件

23
2014
06

多个UpdatePanel空间嵌套及刷新问题

 

 
在开发过程中难免会用到UpdatePanel控件的一些复杂的使用。如:UpdatePanel控件的嵌套、在母版页中使用UpdatePanel、在用户控件中使用UpdatePanel以及在GridView中使用UpdatePanel等。
其实这些操作也免不了对UpdatePanel控件的UpdateMode属性、ChildrenAsTrigger属性以及触发器的使用,下面是系统地说明。

 

一、两个嵌套的UpdatePanel控件,外部的UpdatePanel内的控件回发引发二者同时更新

23
2014
06

UpdatePanel控件的局部刷新使用说明

 


ScriptManager和UpdatePanel控件联合使用可以实现页面异步局部更新的效果。其中的UpdatePanel就是设置页面中异 步局部更新区域,它必须依赖于ScriptManager存在,因为ScriptManger控件提供了客户端脚本生成与管理UpdatePanel的功 能。
几个重要的属性:
    ScriptManager控件的EnablePartialRendering属性:true-实现页面的异步局部更新;false-实现全页面的刷新。
    UpdatePanel控件的RenderMode属性:InLine-UpdatePanel控件被解析成HTML的<span>标记;Block-UpdatePanel控件被解析成HTML控件的<DIV>。
    UpdatePanel控件的UpdateMode属性:Always-UpdatePanel页面上任何一处发生的回发操作都会产生页局部更新;Conditional-只在特定的情况下才产页面的回发,如执行UpdatePanel控件的update()方法或在指定的触发器的操作下。
    UpdatePanel控件的ChildAsTrigger属性:指示UpdatePanel内部控件引起的回发是否产生当前UpdatePanel控件的局部更新。如果UpdateMode设为Always的话,那ChildAsTrigger局性必须设为True,否则运行出错。

21
2014
06

span宽度无效的解决方法

 

原因很简单span是内联标签,内联标签是忽略宽度和高度的,解决办法如下:

1.在span的css中设置 display:-moz-inline-box;  display:inline-block;

 

block,inline,inline-block的区别:

display:block;——类似与DIV标签的宽高边距等属性均可定制的元素特性;

display:inline;——类似与<a>、<strong>标签的宽高等属性不可定制的元素特性;

20
2014
06

html块元素和内联元素嵌套规则

 <p style="width: 500px; border: 1px solid #00ff00;">
    <span style="width: 100px; border: 1px solid #00ff00;">This is P1Span1
    </span>
    <span style="width: 200px; border: 1px solid #00ff00; background: url(blogstar13_s.gif) no-repeat right">This is P1 Span2
    </span>
</p>
<p style="width: 500px; border: 1px solid #00ff00;">
    <span style="width: 100px; border: 1px solid #00ff00;">P1
    </span>
    <span style="width: 200px; border: 1px solid #00ff00; background: url(blogstar13_s.gif) no-repeat right">Span4
    </span>
</p>

16
2014
06

Windows Server 2012 IIS8 HTTP Error 500.19错误代码 0x80070021

 




 要将 IIS 中的 「功能委派」 中的 「处理程序映射」由原本的 「只读」改成「读取/写入」,

12
2014
06

Silverlight出错:无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性

 

在VS中调试Silverlight程序出错,如下提示:

用户代码未处理 System.Reflection.ReflectionTypeLoadException
  Message=无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性。
  StackTrace:
       位于 System.Reflection.RuntimeModule.GetTypes(RuntimeModule module)
       位于 System.Reflection.RuntimeModule.GetTypes()
       位于 System.Reflection.Assembly.GetTypes()
       位于 Telerik.Windows.Controls.RadDiagram.<>c__DisplayClass14.<InitializeExtensionCommands>b__13(Assembly a)
       位于 Telerik.Windows.Diagrams.Core.CommonExtensions.ForEach[T](IEnumerable`1 collection, Action`1 action)
       位于 Telerik.Windows.Controls.RadDiagram.InitializeExtensionCommands()
  InnerException:

12
2014
06

万兴PDF编辑器 Wondershare PDF Editor

 

邮 箱(Email):a@b.com
(Code):D3F75A0EA132C400568D6D1E79B07200

 

12
2014
06

Silverlight 应用程序中未处理的错误 4004 ManagedRuntimeError

 

 

发布的 Silverlight 程序在其他电脑上都是好好的 ,但是在一台电脑上 出现无法加载和打开的错误  , JS 错误提示如下:

 

消息: Silverlight 应用程序中未处理的错误
代码: 4004   
类别: ManagedRuntimeError      
消息: System.Exception: [Arg_COMException]
参数:
调试资源字符串不可用。密钥和参数通常提供足够的信息用以诊断该问题。请访问
http://go.microsoft.com/fwlink/?linkid=106663&Version=5.1.30214.00&File=mscorlib.dll&Key=Arg_COMException
   位于 MS.Internal.XcpImports.CheckHResult(UInt32 hr)
   位于 MS.Internal.XcpImports.GetValue(IManagedPeerBase managedPeer, DependencyProperty property)
   位于 System.Windows.DependencyObject.GetValueInternal(DependencyProperty dp)
   位于 System.Windows.FrameworkElement.GetValueInternal(DependencyProperty dp)
   位于 System.Windows.FrameworkElement.get_ActualWidth()