最近做的 X-Wall, 偶尔需要和浏览器进行交互, 之前采取的办法是注册一个 xwall 协议, 然后浏览器中用 JavaScript 通过改变 location.href 的方法调用. 但是有两个缺点, 一个是第一次很多浏览器会有提示, 另一个是只能触发不能得到结果, 也就没法知道操作是否完成.
后来在网上搜索相关解决方案, 看到了这个 <重编译WebDev.WebServer,使其支持网络应用>. 觉得有戏, 就也反编译了下 VS 2012 自带的看了看. VS 2012 里有其实有两个, 一个是 WebDev.WebHost20.dll, 一个是 WebDev.WebHost40.dll, 因为统一用 .NET 3.5, 所以就选择了第一个. 不过与上面所引用的文章目的不同, 我是希望这个东西作为程序内建的微型服务器, 而不是作为一个单纯的程序, 所以只需要这个 DLL 就可以了. 不过也用上了文章作者添加的 InitHost 方法, 用于初始化.
在 Windows 7 下面没法直接看到这个文件, 可以打开资源管理器后直接在搜索栏搜索 WebDev.WebHost, 或者借助 WinRAR 在 Windows\assembly\ 目录下找到复制出来, 然后用 Reflector 反编译. 修改后在项目中添加引用, 调用方式:
// path 是 ASP.NET 程序目录, port 和 vpath 对应 URL 中的位置如下. // localhost:[port]/[vpath]/ var server = new Microsoft.VisualStudio.WebHost.Server(port, vpath, path); server.Start();
除了第一次访问还是略慢, 其他都蛮好. 希望有用~