引子
源于给客户做的一个系统, 基于传统的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 { }
}
}
}
分享到:
相关推荐
在部分内容中,我们可以看到作者详细介绍了如何使用 IIS 调试 ASP.NET 网站程序的步骤,包括打开 IIS 管理器、新建网站、配置应用程序池、设置 Host 文件、配置本地域名、使用浏览器访问网站、附加 IIS 进程进行调试...
ASP.NET Core 是一个功能强大、性能高效的 Web 应用程序框架,适用于开发各种跨平台的 Web 应用程序。本文档提供了 ASP.NET Core 的中文使用手册,旨在帮助开发者快速学习和掌握 ASP.NET Core 的技术。
这里我们将深入探讨如何在ASP.NET环境中,利用SelfHost模式来构建一个文件上传的服务,并讨论同步与异步上传的区别。 **同步上传** 同步上传是最基础的文件上传方式,它会阻塞用户界面直到文件上传完成。在给定的...
在.NET平台上,ASP.NET是一个强大的Web开发框架,它允许开发者创建动态网站、Web应用和服务。ASP.NET的运行机制涉及到IIS(Internet Information Services)服务器。IIS负责接收HTTP请求,解析请求,然后将请求传递...
- **ASP.NET Core** 是一个用于构建现代 Web 应用程序的免费开源框架。它由 Microsoft 设计并维护,适用于 Windows、macOS 和 Linux 平台。 - ASP.NET Core 具有高度可配置性、模块化以及高性能的特点,使得开发者...
ASP.NET Core是一个跨平台的高性能框架,用于构建现代、云就绪、基于互联网的应用程序。在ASP.NET Core中实现二级域名的功能,可以帮助开发者为不同功能或服务创建独立的访问入口,提升用户体验并优化网站架构。下面...
本文将详细介绍如何在Ubuntu 16.04上通过Jexus Web服务器部署一个ASP.NET Core应用程序。 首先,部署准备环境包括VMware虚拟机或任何其他虚拟化平台,以及Ubuntu 16.04的操作系统镜像。在Windows 10环境下,你需要...
以下是一个详细的步骤指南,教你如何在 ASP.NET 中实现这一功能: 1. 创建 HTTP 处理程序(HTTPHandler): 在 ASP.NET 中,我们可以使用 HTTP 处理程序(IHttpHandler)接口来处理特定类型的请求。首先,我们需要...
在项目中,我们需要创建一个专门用于放置网站的文件夹,方便管理。我们可以创建两个文件夹,分别是 h5 文件夹和 api 文件夹,将写好的代码依类别放入。 三、H5 配置 在 h5 文件夹中,我们需要配置路由的格式,包括 ...
当我们创建一个ASP.NET Web应用程序时,通常会涉及处理HTTP请求。例如,创建一个简单的aspx页面,包含一个按钮和一个文本框。当用户与页面交互时,会发生以下情况: 1. **请求发送**:用户点击按钮或者提交表单时,...
本文旨在介绍如何使用 ASP.NET MVC 框架开发微信支付 H5,实现外置浏览器支付的功能。微信支付 H5 是一种基于微信客户端外的移动端网页支付方式,商户可以在移动端网页展示商品或服务,用户确认使用微信支付时,商户...
ASP.NET邮件发送是Web开发中常见的一项功能,用于向用户或指定邮箱地址发送通知、确认信息等。...以上就是关于ASP.NET邮件发送的核心知识点,通过理解和应用这些概念,你将能够实现一个功能完善的邮件发送系统。
在 ASP.NET 开发中,实现 301 重定向是一个非常重要的技术,特别是在搜索引擎优化(SEO)方面。为什么需要实现 301 重定向?因为搜索引擎将 www.abc.com 和 abc.com 识别为不同的两个域名,这样做的后果就是分散了对...
本文将详细介绍如何在ASP.NET中实现Web打印的功能,包括基本原理、关键技术点以及具体的实现步骤。 #### 二、技术背景与挑战 在ASP.NET环境中实现Web打印,主要面临以下几个技术挑战: - 如何将Web页面内容转换为可...
ASP.NET 获取 URL 和 IP 地址的方法汇总 在 ASP.NET 编程中,获取 URL 和 IP 地址是非常重要的操作。正确地获取 URL 和 IP 地址可以帮助开发者更好地理解用户的行为,提高应用程序的安全性和性能。本文将总结 ASP...
在这个场景中,我们遇到了一个常见的错误:"HTTP 错误 500.19 - Internal Server Error",这通常意味着 IIS(Internet Information Services)服务器无法加载应用程序的配置文件,导致应用无法正常启动。 首先,...
标题中的"IIS下的.NET远程处理-ASP.NET应用程序作为客户端"是指在Internet Information Services (IIS)服务器上,使用ASP.NET应用程序作为一个远程处理的客户端来调用远程服务或组件的技术。这种技术允许分布式系统...
下面是一个基本的ASP.NET发送邮件的示例代码: ```csharp using System.Net; using System.Net.Mail; // 创建邮件对象 MailMessage message = new MailMessage(); message.From = new MailAddress("sender@example...