文章标签 ‘ASP.NET’

[转载]asp.net教程asp.net客户端回调功能的实现机制 – 细细程序员 – 博客园. 实现的过程基本上就是:让要实现客户端回调功能的页面或者空间实现 System.Web.UI.ICallbackEventHandler的接口,即2个方法:void RaiseCallbackEvent(string eventArgument),这个是当客户端触发服务器端事件的委托方法,string GetCallbackResult();这个是返回客户端需要的值,只能是string 型的,当然你也可以返回一个Json串。 然后在 pageload的时候注册脚本到客户端:在这里注册一个CallServer方法来调用服务器端方法,ReceiveServerData来捕获服务器 返回的结果。当然你也可以使用一个方法来捕获服务器端的错误,详见 Page.ClientScript.RegisterClientScriptBlock这个方法的MSDN解释。 这样就能实现客户端的回调服务器端事件,并返回值。 生成好页面后,查看源代码: 首先是多了一个js资源文件,多了一行这样的代码: 在body快结束的时候还有一段这样的代码: WebForm_InitCallback();好,这些应该就是ASP.NET为了实现客户端回调所作的补充工作了吧,咱们来研究吧。 首先看js资源文件(20多K,汗一个…)。先在资源文件里面找到这个方法,WebForm_InitCallback(); 方法如下: function WebForm_InitCallback() { var count = theForm.elements.length; var element; for (var i = 0; i < count; i++) { element = theForm.elements[i]; var tagName = element.tagName.toLowerCase(); if (tagName == "input") { var type [...]

2012年3月29日09:49 评论关闭

[转载]ASP.NET Web API: 宿主(Hosting) – 张善友 – 博客园. ASP.NET Web API 处理架构中介绍了ASP.NET Web API主 要有三层组成:宿主(hosting),消息处理管道(message handler pipeline)和控制器处理(controller handling),本篇文章主要介绍宿主(Hosting):包括ASP.NET经典管道上的Web Hosting和WCF堆栈的自宿主SelfHosting。 ASP.NET经典管道上的Web Hosting 1、ASP.NET 路由使您可以使用不必映射到网站中特定文件的 URL。 由于该 URL 不必映射到文件,因此可以使用对用户操作进行描述因而更易于被用户理解的 URL,路由在ASP.NET Web API上一样有重要的位置。在ASP.NET平台上,是通过RouteTable的静态属性Routes添加路由到路由表里,例如下面的代码是 ASP.NET MVC项目模板默认定义的路由: protected void Application_Start() { RegisterRoutes(RouteTable.Routes); } public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”); routes.MapRoute( “Default”, // Route name “{controller}/{action}/{id}”, // URL with parameters [...]

2012年3月20日09:22 评论关闭

[转载]ASP.NET Web API 处理架构 – 张善友 – 博客园. 这篇文章主要是介绍ASP.NET Web API的处理架构:当一个HTTP请求到达直到产生一个请求的过程。ASP.NET Web API 的处理架构图如下,主要有三层组成:宿主(hosting),消息处理管道(message handler pipeline)和控制器处理(controller handling). 宿主(Hosting) 底层负责Web API的宿主,Web API之间的接口和HTTP 处理引擎。一句话,这一层负责创建HttpRequestMessage实例。然后把他们推入到上层的消息处理管道。宿主层也负责消息处理管道返回的HttpResponseMessage 。目前在ASP.NET Web API里头已经内建的宿主选项有2个:self-hosting 和 web hosting, web hosting也就是宿主在IIS的ASP.NET 的处理管道里,Self-hosting 是基于WCF channel stack,的 WCF Message 实例  ,然后转换到 HttpRequestMessage 实例然后把他们推给上层的消息处理管道。 Web-hosting 是基于IHttpAsyncHandler, 命名为 HttpControllerHandler, 它把 HttpRequest 转换为HttpRequestMessage.当然Web API hosting 是可扩展的,不仅仅局限于这两个选项,你可以根据自己的需求定制,社区已经有人实现第三方的宿主Louis DeJardin在OWIN created a host 。 消息处理管道(Message [...]

2012年3月19日17:32 评论关闭

[转载]必须要知道的session – for certain – 博客园.      越深入的了解ASP.NET,就会非常的感叹它的设计,功能强大,任何阶段的开发人员,不管是菜鸟、大牛,都能找到自己的用武之地:灵活,即可以利用本身 提供程序通过配置加简单代码方便的完成需求,也可以充分利用它的扩展性完成一些特定或本身不具备的功能。我们可以从session的设计中看到一些这样的 例子。   session设计简述       准确的来说是会话状态,它是服务状态管理的一部分,每个访问应用程序的客户端有不同的会话且包含不同的信息,我们可以通过属性session来访问它。与 viewstate存储方式不同的是,它把信息存储在服务器,当用户访问多时,可能会给服务器带来不小的压力。         既然session的数据存储在服务器,这就涉及到服务端要识别客户端的问题。ASP.NET使用一个标识来跟踪会话,我们可以session实例的SessionID的属性来获取这个标识,你可以通过配置来决定这个标识是通过cookie或url的方式传递,这个标识是一个私有的算法来生成的一个120位的值,它能保证唯一且随机,保证各个客户端不会出现相同的标识且不会被其它人通过其它方式生成。服务器端获取到这个ID,就会查找相应的会话,如果能找到相应的数据,就会把它填充到session中,供我们使用。另外还有一点要注意的是,如果你还没有用session存储信息,那么每次新请求,ASP.NET就会生成一个新的ID。         那么这整个的流程,又是asp.net的那个模块来负责的呢?我们知道每个http请求都会经过多个模块的处理管道,其中有一个叫做SessionStateModule的模块,它负责产生会话ID,从session提供程序中获取数据,并绑定到请求的上下文中。当请求处理完毕时,它还负责保存会话信息到session提供程序中。        这个session提供程序是什么?对,就是我们配置中sessionState mode中所指出的InProc,StateServer,SQLServer,我们可以根据需求很简单通过配置来实现会话信息存储在当前应用程序进程内、独立的服务或数据库中。但其实这个提供程序要求是一个实现了IHttpSessionState的任意类,以上的三种只不过asp.net内置的三种经常会用到的提供程序而已,如果我们有特殊需求时,我们完全可以自己定义提供程序。还有另一个极端,不使用会话状态。mode中还有另外两个值:Custom,Off。   压缩和安全       我们前文中说到的session存储到服务器端的,如果大量用户访问时,这对服务器的内存是一个不小的压力;还有如果使用的其它计算机存储会话信息,这其 中涉及到数据的网络传输。这些情况下,通过设置enableCompression=true启用压缩来减小数据的大小,会是一个较好的选择。但是要注意 的,虽然省了内存或网络传输流量和时间,但是数据的压缩和解压缩都是需要耗费额外的cpu时间的。究竟如何取舍,这就要看实际的情况了。         session把信息存储到服务器端,整个过程中唯一发送到客户端的只有一个session的ID,唯一的突破点就在于黑客入侵用户的电脑,并且复制用户 cookie在另一个电脑使用,从而达到以一个用户身份来访问应用程序,即使这种情况,就算你把用户私密如信用卡的账号、密码存储到session中,只 要你只是用它来进行和用户输入的进行校验,而不是2的把它输出的页面或客户端,黑客是没办法获取到这些session信息的。但是这始终是一个隐患,用户 的一些信息可能会泄露,这样我们可以使用自定义会话模块来检测cookie和用户IP或其它客户端特定信息来检测是否同一个用户的请求,更有效的方法启用 SSL,这样cookie被加密只能在此计算机使用,并且启用 Request.Cookies[“Assp.NET_SessionId”].Secure=true,这样cookie只能通过SSL即URL的 Https://传递。         另外对于使用无cookie的会话,尽管这个ID是加密过的,但是还是可以通过一个含有有效会话ID的Url来加入这个会话,对于此方法启用SSL也无法 杜绝其它用户,但是我们可以通过启用regenerateExpiredSessionId=true,这样可以让过期的ID失效,减少攻击的机率。   结尾      本文没有对session的细节使用做太多的说明,只是希望能从session的设计中学习一些设计的思路,可以用于自己应用的开发当中,然后对 session实际的应用使用何种提供程序有个取舍,其它一些细节都会迎刃而解,最后使用任何中机制都不要忘了安全性。  

2012年3月19日17:07 评论关闭

[转载]JQuery.Uploadify asp.net(C#)文件,多文件上传插件. Uploadify是JQuery的一个上传插件,带进度显示, 支持多文件上传。不过官方提供的实例时php版本的 Uploadify唯一的缺点就是不支持中文按钮 官方下载  官方文档  官方演示 实现 Uploadify实现最低要求: JQuery 1.4.x or greater swfObject 2.2 or greater Flash Player 9.0.24 or greater所需文件 cancel.png JQuery.uploadify.v2.1.4.min.js jQuery-1.4.2.min.js swfobject.js uploadify.css uploadify.php uploadify.swf基本代码 <script type="text/JavaScript" src="/uploadify/jQuery-1.4.2.min.js"></script><script type="text/JavaScript" src="/uploadify/swfobject.js"></script> <script type="text/javascript" src="/uploadify/jQuery.uploadify.v2.1.4.min.js"></script><script type="text/javascript">// <![CDATA[ $(document).ready(function() { $('#file_upload').uploadify({ 'uploader' : '/uploadify/uploadify.swf', 'script' : '/uploadify/uploadify.php', 'cancelImg' : '/uploadify/cancel.png', 'folder' : '/uploads', [...]

2012年3月14日15:53 评论关闭
备案信息:冀ICP备10007948号