标题如何使用Cassini,我在测试Cassini时遇到的问题

我经常用ASP.NET来写一些小程序,写起来方便,但是要部署到客户的机器上,就成了麻烦事,客户的机器上不一定有IIS,并且用户不一定愿意安装那个东西,
所以这里我们要脱离IIS执行ASP.NET,就用到这们这里的cassini服务器,


为了测试他的可用性,我先在IIS下边做一个示例工程:C:/Inetpub/wwwroot/Casi
里边包含了,一个读取数据库返回DataSet的WebForm,和一个读取数据库返回DataSet的Service1.asmx
在IIS上测试没有问题,

接下来,测试Cassini

首先从asp.net上下载cassini的源代码,里边有编译好的exe程序,运行产生错误.
错误的内容:"cassini managed web server failed to start listening on port 8080.possible conflict with another web server on the same port"

发现这个错误后,我换了好几个不可能被占用的端口,都是相同一的错误,我感到非常奇怪,
找一个非常简单的端口扫描程序,检测了一下端口,发现我测试的端口,都是没有被占用的.
基于.net2.0 简单端口测试程序.

http://dl2.csdn.net/down4/20070627/27113631782.exe

直到找这篇文章.
http://blog.csdn.net/shanhe/archive/2004/11/10/176422.aspx

里边详细的说明的错误的原因,

我在这里复制一一下:)

我将所有的源代码拷贝到我的一个新建的工程里边,找到出错的地方,

  try {
    _server 
= new Cassini.Server(portNumber, _virtRoot, _appPath);
    _server.Start();
    }
    
catch {
    ShowError(
        
"Cassini Managed Web Server failed to start listening on port " + portNumber + ". " +
        
"Possible conflict with another Web Server on the same port.");
    portTextBox.SelectAll();
    portTextBox.Focus();
    
return;
    }

注释掉try catch,找到源代码,发现是server.cs文件里的CreateHost()这个函数

 

    System.Type _hosttype=typeof(Host);
    
object o=ApplicationHost.CreateApplicationHost( _hosttype,_virtualPath, _physicalPath);

    
if(o ==null){throw new Exception("不能创建Application Host object");}

    _host 
=as Host;
    
if(_host ==null){
        
throw new Exception("转换失败,请检查黯转换类型");
    }

将函数代码改成这样,发现错误在:
object o=ApplicationHost.CreateApplicationHost( _hosttype,_virtualPath, _physicalPath);

经shanhe的专栏中的提示后,悄然大悟
将编译成的cxyCassini.exe拷贝到C:/Inetpub/wwwroot/Casi/bin下,运行 exe文件,
写好端口:8080
填上路径,C:/Inetpub/wwwroot/Casi开始运行,
大功告成.呵呵

标题如何使用Cassini,我在测试Cassini时遇到的问题

 

上一篇:用NUnit进行.net单元测试时,找不到文件或程序集名


下一篇:C#多文档的窗体显示