Bestcomy.net blog

Coding for funny
posts - 115, comments - 2708, trackbacks - 19, articles - 1

置顶随笔

专为ASP.NET程序开发人员设计,提供基于WEB的大文件上传完美解决方案。
特性简介
  • 可上传任意大小文件,同时用户可上传最大文件大小可由服务器端控制。
  • 可上传文件大小由组件配置文件可控制,不受到系统配置文件(machine.config)的影响。
  • 完全基于.NET开发,无需任何客户端配置。
  • 提供同步的上传进度条,显示实时上传进度信息。
  • 不破坏页面逻辑,提供类似ASP.NET内置上传组件的使用方法。
  • 不受 Server.ScriptTimeout(请求的超时设置) 影响。
  • 可以对每一次请求单独控制上传文件大小。
  • 不影响同一项目中的HtmlInputfile功能。
开发测试环境
  • 操作系统:  Windows 2000 Professional
  • 开发工具:  Microsoft Visual Studio.NET 2003
  • WEB服务器:  IIS 5.0 & .NET Framework 1.1
  • 浏览器:  Internet Explorer 6.0
DEMO下载
更新历史
  • AspnetUpload 2.3 (2005年11月30日)
    1. 完全支持ASP.NET 2.0的版本(不与ASP.NET 1.0兼容)。
    2. Windows 2003 Server 下使用 VS.NET 2005开发.
  • AspnetUpload 2.2 (2005年9月27日)
    1. 修正一个BUG
    2. 按照每个请求单独控制上传文件大小
    3. 对不应用本控件的页面仍然可以使用缺省的InputFile控件
  • AspnetUpload 2.1.2 (2005年4月28日)
    1. 增加内置进度条;
    2. 增加10m免费版.
  • AspnetUpload 2.1 正式版(2005年4月3日)
    1. 修正2.0发布以来在用户的实际使用中发现的bug,目前已经是一个相当稳定的版本。
    2. 已经支持大部分主流浏览器。
  • AspnetUpload 2.0 正式版(2004年9月23日)
    1. 重写文件上传核心代码,提高上传速度,同时降低上传过程资源利用率
      本地测试速度提高一倍以上,internet环境测试可达到专业ftp软件上传速度的2/3.
    2. 增加组件配置信息,文件上传大小由组件配置信息控制(位于web.config),不受到系统配置信息影响(machine.config)
      注意:目前本组件不支持 ASP.NE 2.0,将在ASP.NET 2.0正式版推出后增加对其的支持。
  • AspnetUpload 1.1 正式版(2004年7月29日)
    1. 修改中文支持的问题 (感谢 江泪)
    2. 上传中途取消后可不关闭上传页面而重新加载上传页面 (感谢  C#进阶 和 宝玉)
    3. 增加对验证控件的支持
  • AspnetUpload 1.0 正式版
    基于测试版的改进:
    1. 修正了测试版中上传完成后资源未完全释放问题;
    2. 集成对IIS 5.O 和 IIS 6.0 统一支持,即无需针对不同的IIS服务器版本使用不同的演示程序;
    3. 增加自定义客户端验证功能;
    4. 演示程序中增加了无刷新进度条示例和自定义客户端验证功能示例。
购买
请通过以下方式支付:
  • AspnetUpload 2.2 服务器版(序列号与服务器硬件相关)
  • AspnetUpload 2.2 web site license(通过WEB服务器ip地址生成序列号)
  • AspnetUpload 2.2 企业版(序列号与服务器硬件无关)

 

  • AspnetUpload 2.3 服务器版(序列号与服务器硬件相关)
  • AspnetUpload 2.3 企业版(序列号与服务器硬件无关)

 

作者主页
http://www.aspnetupload.net

重要申明:本组件为共享软件,DEMO无功能限制,但是有时间限制

posted @ 2004-06-09 00:30 bestcomy 阅读(56884) | 评论 (228)编辑

2008年4月3日

     摘要: 1varProgressIndicator={2isShow:false,3height:100,4width:300,5target:self,6spinner:"../images/spinner.gif",7show:function(width,height,target)8{9if(this.isShow==false)10{11if(arguments.length>=2)12{... 阅读全文

posted @ 2008-04-03 16:32 bestcomy 阅读(1814) | 评论 (12)编辑

2008年3月22日

直至今天早晨,仍然未见国内网友转载该消息。一向即时翻译 ScottGu博文的博克堂亦未见翻译文字。我来凑个热闹。

 ScottGu 已宣布公开 ASP.NET Preview 2 Release源码,可到Codeplex下载。

posted @ 2008-03-22 08:27 bestcomy 阅读(3120) | 评论 (12)编辑

2008年3月18日

项目组缺人,替老大在此发招聘信息一则:

要求:
至少3年.net开发经验;
有责任心,勤奋,谦虚,善于团队合作;
良好的学习、理解、抽象思维能力;
需要来之能战,战之能胜

工作地点:复兴门
待遇面议

注意:非FTE职位;因长期在客户方工作,工作环境由客户方提供,此职位不适合对工作环境有较高要求者。

有意者简历至v-shaolv # microsoft.com

 

posted @ 2008-03-18 22:58 bestcomy 阅读(801) | 评论 (8)编辑

2008年1月23日

http://weblogs.asp.net/kevinlv/

posted @ 2008-01-23 23:34 bestcomy 阅读(223) | 评论 (4)编辑

2007年10月19日

已经相当久没有写Blog了,差不多大半年的时间都在作SharePoint相关工作,给一家国企部署企业门户,做了大量的定制化开发,今天突然想写点东西,目前部署工作进入尾声,那就谈一谈我在部署SharePoint的一些个人体会吧,因为不知道自己具体要说什么,也没有重点,那就给这篇Blog命名为“胡言乱语”吧。

我们在部署过程中碰到的第一个问题就是SharePoint的界面风格与用户的期望有很大差距,后来采用了自定义模板的办法,因为对于企业的各部门站点用户要求一致。而且这种方法让我们后期维护也省了不少力气,不过前提是千万不要用FrontPage来修改这些用模板生成的站点,这样我们在模板做的修改才能应用到各个站点中,否则要一个站点一个站点的单独修改。

SharePoint 2003的另外一个问题就是不管当前用户是否有权限都列出所有的功能链接,只有在操作的时候才知道是否有权限,这样让用户很疑惑,增加了我们的维护工作量,因此我们在_layouts下部署了一个集成的应用程序,作了一套通过树形视图来浏览文档库和列表的界面,这套界面的功能按钮都根据用户权限适当显示。后来我感觉到其实他的这套文档库浏览界面我们也完全可以在模板中定制好。

在做集成的应用程序和相关WebPart开发时,发现当前用户往往需要做他没有权限的操作,开始的时候我们通过在Web.config中定义一个有管理员权限的用户的用户名和密码,这样impersonate该用户来做相关操作,但是SharePoint仍然无法成功完成操作,后来查一些资料说impersonate不能在SharePoint中成功,需要impersonnate之后然后在新的appdomain中完成操作。后来对impesonate进行了更改,通过impersonnate application pool的域用户之后然new一个appdomain,这样就只需要维护application pool的用户名和密码就可以了。

修改ows.js能给我们满足用户的一些BT要求很有帮助,当然我们首先是把文档库中下拉列表菜单中的很多菜单项去掉,只留下必须的。另外增加自定义菜单项,比如提供将文档复制或移动到当前站点下的其他文档库的功能,点击该菜单项之后show一个目标文档库选择器网页对话框,点击确定后移动或复制文档。

关于SQL Server 2005数据库迁移,随着用户数量的上升单服务器配置已经显得紧张,于是迁移数据库到数据库服务器上。迁移有两种方案,一种是官方提供的用户SharePoint备份恢复工具,另外一种是在SPS管理中心修改组件服务器和内容服务器为新的服务器,取消组件分配,删除门户网站,断开配置数据库,然后在新的数据库服务器上恢复SITE、PROF、SERV三个数据库,将SharePoint管理员加入SQL login中,分配dbcreator 和securityadmin服务器角色,并将其指定为这三个数据库的owner,重新将配置数据库建立到新的数据库服务器上,分配组件配置,恢复门户网站。两种方法的区别之一是官方方法不会保留管理路径中的排除路径信息而后一种方法会。

就这么多了,接到新任务是研究下SharePoint 2007 Search,看来SharePoint跟我缘分不浅啊,还没摸过2007,不知道会有多少新奇玩意儿。

posted @ 2007-10-19 22:34 bestcomy 阅读(653) | 评论 (2)编辑

2006年11月14日

最近微软vs.net开发人员会向我们征询在使用vs.net中的不满意的地方以及新featrue的建议。这些意见和建议将很可能在将来的产品中体现。
借博客园这块风水宝地,请园子里的高手都来说道说道,畅所欲言。
我将在几日后与vs.net开发人员的座谈中把你们意见和建议提交给vs.net产品组。

(请dudu允许暂放首页一日)

posted @ 2006-11-14 23:23 bestcomy 阅读(3233) | 评论 (52)编辑

2006年11月3日

Some script I must post here in case of my bad memory. Maybe useful for my blog visitors.

 1 var getHead = function() {
 2                 return document.getElementsByTagName("head")[0];
 3             };
 4             var includeJavascriptFile = function(url) {
 5                 if (document.body == null) {
 6                     document.write("<script src='" + url + "' type='text/javascript'></script>");
 7                 } else {
 8                     var script = document.createElement("script");
 9                     script.type = "text/javascript";
10                     script.language = "JavaScript";
11                     script.src = url;
12                     getHead().appendChild(script);
13                 }
14             };
15             var includeCssFile = function(url) {
16                 if (document.body == null) {
17                     document.write("<link rel='stylesheet' href='" + url + "' type='text/css'/>");
18                 } else {
19                     var link = document.createElement("link");
20                     link.setAttribute("rel""stylesheet");
21                     link.setAttribute("type""text/css");
22                     link.setAttribute("href", url);
23                     getHead().appendChild(link);
24                 }
25             }

posted @ 2006-11-03 10:35 bestcomy 阅读(668) | 评论 (2)编辑

2006年11月2日

I need to render some html in my asp.net applications sometime, I chose HtmlTextWriter to build the html source because I can use those handy methods of this object such as RenderBeginTag, AddAttribute, and so on. I know two ways to do this.

 1 StringBuilder sb = new StringBuilder();
 2             using(StringWriter sw = new StringWriter(sb))
 3             {
 4                 using(HtmlTextWriter output = new HtmlTextWriter(sw))
 5                 {
 6                     output.RenderBeginTag(HtmlTextWriterTag.Table);
 7                     for(int y=0; y<1000; y++)
 8                     {
 9                         output.RenderBeginTag(HtmlTextWriterTag.Tr);
10                         for(int x=0; x<100; x++)
11                         {
12                             output.RenderBeginTag(HtmlTextWriterTag.Td);
13                             output.Write("&nbsp;");
14                             output.RenderEndTag();
15                         }
16                         output.RenderEndTag();
17                         output.Flush();
18                     }
19                     output.RenderEndTag();
20                     Response.Write(output.ToString());
21                 }
22             }

 1 using(MemoryStream stream = new MemoryStream())
 2             {
 3                 using(TextWriter tw = new StreamWriter(stream,System.Text.Encoding.UTF8) as TextWriter)
 4                 {
 5                     using(HtmlTextWriter output = new HtmlTextWriter(tw))
 6                     {
 7                         output.RenderBeginTag(HtmlTextWriterTag.Table);
 8                         for(int y=0; y<1000; y++)
 9                         {
10                             output.RenderBeginTag(HtmlTextWriterTag.Tr);
11                             for(int x=0; x<100; x++)
12                             {
13                                 output.RenderBeginTag(HtmlTextWriterTag.Td);
14                                 output.Write("&nbsp;");
15                                 output.RenderEndTag();
16                             }
17                             output.RenderEndTag();
18                         }
19                         output.RenderEndTag();
20                         output.Flush();
21                         Response.Write(output.ToString());
22                     }
23                 }
24             }

posted @ 2006-11-02 16:03 bestcomy 阅读(823) | 评论 (0)编辑

2006年10月31日

When I create a new sharepoint template for my project use, I want to set the value for webpart’s properties as soon as the site created using this template. Adding a list by default is easy after my reading of the great article from http://aspalliance.com/ . I have developed a webpart for list displaying, and I know how to add this webpart in the rootweb by default, but I don’t know how to set value for the webpart’s properties by default. When I open a Onet.xml from one built-in template I got a example as follows:

 1 <AllUsersWebPart WebPartZoneID="Right" WebPartOrder="1">
 2                    <![CDATA[
 3                    <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" xmlns:iwp="http://schemas.microsoft.com/WebPart/v2/Image">
 4                         <Assembly>Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c</Assembly>
 5                         <TypeName>Microsoft.SharePoint.WebPartPages.ImageWebPart</TypeName>
 6                         <FrameType>None</FrameType>
 7                         <Title>网站图像</Title>
 8                         <iwp:ImageLink>/_layouts/images/homepage.gif</iwp:ImageLink>
 9                    </WebPart>
10                    ]]>
11                 </AllUsersWebPart>

I believe line 8 is the key of my problem. And now the problem is how to set the iwp prefix. After my reflector of Microsoft.SharePoint.WebPartPages.ImageWebPart, I got some interesting code fragment below:

1 [Guid("20743A06-C4E6-4984-A8A0-918C34353148"), XmlRoot(Namespace="http://schemas.microsoft.com/WebPart/v2/Image")]
2 public sealed class ImageWebPart : WebPart, IDesignTimeHtmlProvider, ICellConsumer
3 {
4 //
5 }

Compare xmlns:iwp="http://schemas.microsoft.com/WebPart/v2/Image" to  XmlRoot(Namespace="http://schemas.microsoft.com/WebPart/v2/Image"), I know the answer. my webpart xmlroot is "Microsoft.MCS.HPITeam.Portal.WebParts", so I registered my webpart as following:

<AllUsersWebPart WebPartZoneID="Middle" WebPartOrder="2">
                   
<![CDATA[
                   <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2" xmlns:dtl="Microsoft.MCS.HPITeam.Portal.WebParts">
                        <Assembly>Microsoft.MCS.HPITeam.Portal.WebParts, Version=1.0.0.0, Culture=neutral, PublicKeyToken=541eeb7342aeb9f8</Assembly>
                        <TypeName>Microsoft.MCS.HPITeam.Portal.WebParts.DocumentTopList</TypeName>
                        <FrameType>None</FrameType>
                        <Title>部门动态</Title>
                        <dtl:DocumentLibraryName>部门动态</dtl:DocumentLibraryName>
                        <dtl:DisplayTitle>部门动态</dtl:DisplayTitle>
                        <dtl:DisplayWidth>500</dtl:DisplayWidth>
                   </WebPart>
                   
]]>
                
</AllUsersWebPart>

posted @ 2006-10-31 23:00 bestcomy 阅读(661) | 评论 (0)编辑

2006年9月28日

I am new for SharePoint less than one month. Yesterday, when I tried to get a calculated field value from the SPListItem, I always got an original value like float;#16.0000000. After one day headache, I get an idea from SDK, the SPListItemCollection has a method named GetDataTable, this method like an interpreter who translate SPFieldType into .net data type natively. so I can get the true value of the calculate field value easily.

posted @ 2006-09-28 16:30 bestcomy 阅读(455) | 评论 (0)编辑