`
lh8489
  • 浏览: 52406 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

实现一个可host asp.net程序的小型IIS(Cassinidev介绍)

 
阅读更多

引子

    源于给客户做的一个系统, 基于传统的c/s架构(wpf+wcf), 后来因为客户需要, 就写了一些基于Web的查询小工具, 开发完了要部署的时候才发现, 服务器上并没有装IIS。哭泣的脸

服务器是win 2003 server操作系统, 硬盘上没保留系统安装文件的备份,要装IIS就得跑一趟机房, 为做一个懒惰的程序员,就开始想方法找歪路啦。

Google之, 得到以下信息:

  • Cassini —— VS自带的ASP.NET Development Server的前身(http://blogs.msdn.com/b/dmitryr/ ),可惜这玩意只支持本机连接, 而且最高只支持到.net framework 3.5, pass掉。
  • IIS Express —— 微软打算用来替换掉ASP.NET Development Server的工具, 不仅支持远程连接,.net framework 4更是不在话下, 比VS自带的server功能强大许多, 相信很多vs web开发者已经用iis express来替换掉vs自带的那个asp.net development server, 可是对我这个web新手来说, 这东西还是重量级了些, 配置又好麻烦,懒得研究, pass掉。
  • Cassinidev —— 就是本文的主角啦,这是一个开源项目(http://cassinidev.codeplex.com/ ), 支持远程连接, 支持.net 3.5和4.0, 可以源码级重用或程序集重用, 绝对轻量级,部署方便。

示例

    下载:

CassiniDev 3.5.1.8-4.1.0.8 release (官方下载)

下载回来的压缩包里有很多的exe及dll文件, 下面是每个文件的作用描述:

直接使用的:

CassiniDev.exe:对应.net framework 3.5, asp.net 2.0, windowform gui

CassiniDev4.exe: 对应.net framework 4, asp.net 4.0, windowform gui

CassiniDev-console.exe:对应.net framework 3.5, asp.net 2.0, 控制台程序

CassiniDev4-console.exe:对应.net framework 4, asp.net 4.0, 控制台程序

供二次开发的:

CassiniDev-lib.dll:对应.net framework 3.5, asp.net 2.0

CassiniDev4-lib.dll:对应.net framework 4, asp.net 4.0

供VS调试用的(即用来替换掉VS自带的ASP.Net development server):

WebDev.WebServer.exe

WebDev.WebServer20.exe

WebDev.WebServer40.exe

    使用:

一 般情况下, 直接使用上面的exe便可实现asp.net的寄宿了, 但是相应的, 可供我们控制的就比较少, 不自由, 例如实际应用中可能需要把我们的宿主写成windows Service的形式, 直接用上面的exe就没法实现了, 这种情况下可以利用cassinidev-lib进行二次开发, 甚至是直接到官网上下载源代码来生成自己需要的程序, 下面是一段简单的例子,利用cassinidve4-lib.dll实现一个asp.net的host

  在vs2010中新建一wpf应用程序, 在主窗口中加入一TextBox做显示信息用, 修改MainWindow代码如下:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

using CassiniDev;

 

namespace JKAspNetHost

{

    /// <summary>

    /// MainWindow.xaml 的交互逻辑

    /// </summary>

    public partial class MainWindow : Window

    {

        private readonly Server server;

 

        public MainWindow()

        {

            InitializeComponent();

 

            server = new Server(8038, "/", System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "WebApp"), 

                System.Net.IPAddress.Parse("0.0.0.0"), "", 0, false, false);

 

            server.Start();

            textLog.AppendText("服务器运行中...\r\n");

            textLog.AppendText(server.PhysicalPath +  "\r\n");

            textLog.AppendText(server.RootUrl + "\r\n");

            server.RequestComplete += new EventHandler<RequestEventArgs>(server_RequestComplete);

        }

 

        void server_RequestComplete(object sender, RequestEventArgs e)

        {

            //可能由ui线程以外的线程调用, 所以需要Dispatcher.Invoke

            Dispatcher.Invoke(new Action(()=>{

                textLog.AppendText("Request:" + e.RequestLog.Url + "\r\n");

                if (textLog.Text.Length > 10000)

                {

                    textLog.Text = textLog.Text.Substring(textLog.Text.Length - 1000, 1000);

                }

                textLog.ScrollToEnd();

            }));

        }

 

        private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)

        {

            try

            {

                server.ShutDown();

            }

            catch { }

        }

    }

}
 
分享到:
评论

相关推荐

    【ASP.NET编程知识】利用IIS调试ASP.NET网站程序的完整步骤.docx

    在部分内容中,我们可以看到作者详细介绍了如何使用 IIS 调试 ASP.NET 网站程序的步骤,包括打开 IIS 管理器、新建网站、配置应用程序池、设置 Host 文件、配置本地域名、使用浏览器访问网站、附加 IIS 进程进行调试...

    ASP.NET Core 3.1中文教程.pdf

    ASP.NET Core 是一个功能强大、性能高效的 Web 应用程序框架,适用于开发各种跨平台的 Web 应用程序。本文档提供了 ASP.NET Core 的中文使用手册,旨在帮助开发者快速学习和掌握 ASP.NET Core 的技术。

    【ASP.NET编程知识】ASP.NET WebAPi(selfhost)实现文件同步或异步上传.docx

    这里我们将深入探讨如何在ASP.NET环境中,利用SelfHost模式来构建一个文件上传的服务,并讨论同步与异步上传的区别。 **同步上传** 同步上传是最基础的文件上传方式,它会阻塞用户界面直到文件上传完成。在给定的...

    HTTP协议/IIS 原理及ASP.NET运行机制浅析【图解】

    在.NET平台上,ASP.NET是一个强大的Web开发框架,它允许开发者创建动态网站、Web应用和服务。ASP.NET的运行机制涉及到IIS(Internet Information Services)服务器。IIS负责接收HTTP请求,解析请求,然后将请求传递...

    ASP.NET Core.pdf

    - **ASP.NET Core** 是一个用于构建现代 Web 应用程序的免费开源框架。它由 Microsoft 设计并维护,适用于 Windows、macOS 和 Linux 平台。 - ASP.NET Core 具有高度可配置性、模块化以及高性能的特点,使得开发者...

    asp.net core二级域名实现.zip

    ASP.NET Core是一个跨平台的高性能框架,用于构建现代、云就绪、基于互联网的应用程序。在ASP.NET Core中实现二级域名的功能,可以帮助开发者为不同功能或服务创建独立的访问入口,提升用户体验并优化网站架构。下面...

    【ASP.NET编程知识】ubuntu16.4下用jexus部署ASP.NET Core环境.docx

    本文将详细介绍如何在Ubuntu 16.04上通过Jexus Web服务器部署一个ASP.NET Core应用程序。 首先,部署准备环境包括VMware虚拟机或任何其他虚拟化平台,以及Ubuntu 16.04的操作系统镜像。在Windows 10环境下,你需要...

    ASP.NET实现图片防盗链功能

    以下是一个详细的步骤指南,教你如何在 ASP.NET 中实现这一功能: 1. 创建 HTTP 处理程序(HTTPHandler): 在 ASP.NET 中,我们可以使用 HTTP 处理程序(IHttpHandler)接口来处理特定类型的请求。首先,我们需要...

    IIS部署.NET+Vue项目.docx

    在项目中,我们需要创建一个专门用于放置网站的文件夹,方便管理。我们可以创建两个文件夹,分别是 h5 文件夹和 api 文件夹,将写好的代码依类别放入。 三、H5 配置 在 h5 文件夹中,我们需要配置路由的格式,包括 ...

    ASP.NET深入浅出系列

    当我们创建一个ASP.NET Web应用程序时,通常会涉及处理HTTP请求。例如,创建一个简单的aspx页面,包含一个按钮和一个文本框。当用户与页面交互时,会发生以下情况: 1. **请求发送**:用户点击按钮或者提交表单时,...

    【ASP.NET编程知识】ASP.NET MVC 开发微信支付H5的实现示例(外置浏览器支付).docx

    本文旨在介绍如何使用 ASP.NET MVC 框架开发微信支付 H5,实现外置浏览器支付的功能。微信支付 H5 是一种基于微信客户端外的移动端网页支付方式,商户可以在移动端网页展示商品或服务,用户确认使用微信支付时,商户...

    asp.net邮件发送

    ASP.NET邮件发送是Web开发中常见的一项功能,用于向用户或指定邮箱地址发送通知、确认信息等。...以上就是关于ASP.NET邮件发送的核心知识点,通过理解和应用这些概念,你将能够实现一个功能完善的邮件发送系统。

    【ASP.NET编程知识】ASP.NET实现301重定向方法.docx

    在 ASP.NET 开发中,实现 301 重定向是一个非常重要的技术,特别是在搜索引擎优化(SEO)方面。为什么需要实现 301 重定向?因为搜索引擎将 www.abc.com 和 abc.com 识别为不同的两个域名,这样做的后果就是分散了对...

    ASP.NET中实现Web打印的方案

    本文将详细介绍如何在ASP.NET中实现Web打印的功能,包括基本原理、关键技术点以及具体的实现步骤。 #### 二、技术背景与挑战 在ASP.NET环境中实现Web打印,主要面临以下几个技术挑战: - 如何将Web页面内容转换为可...

    【ASP.NET编程知识】asp.net获取URL和IP地址的方法汇总.docx

    ASP.NET 获取 URL 和 IP 地址的方法汇总 在 ASP.NET 编程中,获取 URL 和 IP 地址是非常重要的操作。正确地获取 URL 和 IP 地址可以帮助开发者更好地理解用户的行为,提高应用程序的安全性和性能。本文将总结 ASP...

    .NET CORE宿主程序

    在这个场景中,我们遇到了一个常见的错误:"HTTP 错误 500.19 - Internal Server Error",这通常意味着 IIS(Internet Information Services)服务器无法加载应用程序的配置文件,导致应用无法正常启动。 首先,...

    IIS下的.NET远程处理-ASP.NET应用程序作为客户端

    标题中的"IIS下的.NET远程处理-ASP.NET应用程序作为客户端"是指在Internet Information Services (IIS)服务器上,使用ASP.NET应用程序作为一个远程处理的客户端来调用远程服务或组件的技术。这种技术允许分布式系统...

    《asp.net发邮件功能》

    下面是一个基本的ASP.NET发送邮件的示例代码: ```csharp using System.Net; using System.Net.Mail; // 创建邮件对象 MailMessage message = new MailMessage(); message.From = new MailAddress("sender@example...

Global site tag (gtag.js) - Google Analytics