登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> 程序员学前班[不再更新,只读] >> 主题: [c#/aspx/http]重编译WebDev.WebServer,使其支持网络应用     [回主站]     [分站链接]
标题
[c#/aspx/http]重编译WebDev.WebServer,使其支持网络应用
clq
浏览(0) + 2010-10-15 11:51:34 发表 编辑

关键字:

来自 http://www.cnblogs.com/zhujiechang/archive/2009/07/30/1534898.html

clq
2010-10-15 11:52:11 发表 编辑

     自从Vs2005起,Vs开发环境便自带了WebDev.WebServer,就是这个图标,它实际上是一个小型的Web服务器,专用于.net平台。大家经常调试程序它还是相当的方便,经过小小的配置就可以指向某个文件夹,使该文件夹成为网站目录已供访问。
    WebDev.WebServer确实很轻便,同时它本身是.net程序,才2个文件,作为测试和演示环境是非常的好用,在xp也能很好的运行,Xp的IIS5实在是不方便用。
    但是自带的WebDev.WebServer只能用于本机,那是因为MS对其进行了限制,因为作出它的目的,本身是为了Vs的开发更方便而已,但是很多测试也是基于网络的,至少你不希望别人测试一些网站,总得来用你的电脑吧。
    WebDev.WebServer一共是两个文件,一个是WebDev.WebServer.exe,另一个是WebDev.WebHost.dll,另 外说一下WebDev.WebServer是安装开发环境才有的,不是安装.net framework里面的东东,所以你提取这两个文件都需要已经安装有开发环境下来进行。
    WebDev.WebServer.exe在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727目录下,如果 安装Vs2008可以在C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0目录下找到,而WebDev.WebHost.dll则不在那里,WebDev.WebHost.dll在安装 时候作为全局程序集已经被编译到C:\windows\Assembly\XXXX....下, 根据你安装的vs2005还是vs2008相关,一共有两个,一个是vs2005的,一个是vs2008的,它们与 WebDev.WebServer.exe互相对应,获得方法是来到命令行窗口,使用原始的命令copy 目标文件 c:\得到,这个DLL也是纯.net的。
    获得这两个文件然后用reflector来反编译下,获得其源码,呵呵很方便吧,本身的源代码都不长。
    然后经过简单加工下使其能够编译运行,又远程访问试下,不行,提示什么?提示拒绝访问,但是说明连接上了,跟踪下代码来到以下设置:
private bool TryParseRequest()
        {
            
this.Reset();
            
this.ReadAllHeaders();
            
if (!this._connection.IsLocal)
            {
                
this._connection.WriteErrorAndClose(0x193);
                
return false;
            }
            
if (((this._headerBytes == null|| (this._endHeadersOffset < 0)) || ((this._headerByteStrings == null|| (this._headerByteStrings.Count == 0)))
            {
                
this._connection.WriteErrorAndClose(400);
                
return false;
            }
            。。。。。。
}

看到this._connection.IsLocal这个判断,摆明是故意的...,注释掉重编译,运行,再访问,OK。
程序还有一个细节是WebDev.WebServer对执行站点目录采用Remoting远程代理方式来载入主机的。
if (host == null)
            {
                
lock (this._lockObject)
                {
                    host 
= this._host;
                    
if (host == null)
                    {
                        
//初始化目标路径中的WebDev.WebHost
                        InitHost();
                        
string appId = (this._virtualPath + this._physicalPath).ToLowerInvariant().GetHashCode().ToString("x", CultureInfo.InvariantCulture);
                        
this._host = (Host) this._appManager.CreateObject(appId, typeof(Host), this._virtualPath, this._physicalPath, false);
                        
this._host.Configure(thisthis._port, this._virtualPath, this._physicalPath, this._requireAuthentication);
                        host 
= this._host;
                    }
                }
            }
这就需要在站点目录的bin目录下面放入WebDev.WebHost.dll,(因为开发环境下已经配置到了全局程序集所以不需要),InitHost()这个方法是我自己加的,用于自动copy WebDev.WebHost.dll到站点目录下。
项目源代码我已经发布了,用vs2008项目来编译的,可以在我的空间找到http://ocean.ys168.com找到,另外在使用的时候需要对WebDev.WebServer项目进行一下自己的配置。

命令行参数里面请指向你自己要测试的站点目录。
源代码下载。/Files/zhujiechang/webdev.rar
8
4
(请您对文章做出评价)
« 上一篇:ASP.NET下QueryString不同字符编码间强制转换的解决方案
» 下一篇:Ext、以及Coolite下实现表格锁定列和多行表头
posted on 2009-07-30 12:00 breeze 阅读(2349) 评论(17) 编辑 收藏
2009-07-30 12:27 | wuyou[未注册用户]
没有资源文件编译不了
 回复 引用   
好!

之前也有想过,感谢!

 回复 引用 查看   
2009-07-30 12:45 | 徐少侠      
老大我爱你

呵呵,没有做不到,只有想不到啊

 回复 引用 查看   
2009-07-30 12:49 | 哈哈啊[未注册用户]
牛哥,i love you
 回复 引用   
2009-07-30 13:06 | ::似水无痕::      
不错不错,临时使用很方便
 回复 引用 查看   
2009-07-30 13:07 | 假正经哥哥      
不错哦
 回复 引用 查看   
2009-07-30 15:04 | andy.wu      
记得很久以前,就在csdn上的博客好象看过,当时惊为天人。
 回复 引用 查看   
#8楼[楼主]
2009-07-30 15:21 | breeze      
@andy.wu
声明一下绝对原创,我不清楚哪里还发布过类似的文章,如果和我这里写的一样,请注明转载我这里:),小型的Web应用服务端网上确实比较多,但是各自实现的方法是不一样的,例如:IIsAdminNet

 回复 引用 查看   
2009-07-30 15:54 | andy.wu      
呵呵,是我不好,没说清楚,楼主不要误会。我只是印象中很久以前看到过。看来搞WebDev.WebServer好象不多啊,我是觉得这个很有用的。
 回复 引用 查看   
2009-07-30 16:18 | 钧梓昊逑      
他这个实现性能很差,用于调试还行,作服务器就算了。
 回复 引用 查看   
2009-07-30 16:23 | nasa      
很感谢 测试用这个很方便
 回复 引用 查看   
2009-07-30 18:04 | pq      
目前为止还是想不明白你重新编译这个东东有什么用?
只有这个离开了IDE照样不能调试呀。
难道想拿它来代替IIS吗?

 回复 引用 查看   
2009-07-31 11:01 | JacksonLin      
这个东西也用过,MS做了坑.
一部分的.net runtime会有bug的.
再是默认会跑debug track断,带跟踪,性能上出问题了.
听说外国有个类似的东西.
我也收集过国内有人重写这个东西,但实在太粗...

 回复 引用 查看   
2009-08-15 22:52 | 阿牛 - 专注Web开发      
附件不能用.
 回复 引用 查看   
#15楼[楼主]
2009-11-11 12:09 | breeze      
@阿牛 - 专注Web开发
可以的,用vs2008编译,生成解决方案那里我去掉编译了,你手工添加回来即可,或者逐项目生成

 回复 引用 查看   
2009-12-02 16:33 | yoyoyoyo[未注册用户]
很方便 谢谢博主!
 回复 引用   
2010-10-13 16:10 | 拽拽      
代码下载后,还要重新改一下几个引用。不然是无法正常编译。找不到资源
 回复 引用 查看  


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1