Kiliman's Korner

.NET, The Universe and Everything

My Links

Blog Stats

Archives

Post Categories

Links

What is CassiniEx?

What is CassiniEx?

CassiniEx is an enhanced version of the Shared Source Cassini Personal Web Server developed by Microsoft.

Why did I write CassiniEx?

At my day job, I create web applications for many different clients. Almost every project is a stand alone web app that resides in the ROOT web. Since I develop on Windows XP, I can only have one web site running at a time.

I wrote a tray app called SwitchIIS that allowed me to toggle between different web sites. But that grew old after a while.

I wondered if I could get Cassini to load up more than one web app. After some experimenting, it turned out that it was possible. I talked to some people about it, and they thought it was pretty cool.

But what they really wanted was a scaled-down IIS. So after adding the features that I thought were essential to my work like virtual folders, multiple host headers, and logging, CassiniEx finally emerged.

What’s the future of CassiniEx?

Considering that Microsoft was kind enough to share the source for Cassini and in part made CassiniEx possible, I want to make this an open source project that other developers can contribute to. Even if the contribution is simply a suggestion for a new feature, that’ll be great.

Over the next couple of weeks, I’ll be blogging about the design of CassiniEx and how to incorporate it into your daily development process. For example, I’ll be writing about how to create and debug web projects in Visual Studio .NET that run on CassiniEx.

Thanks for your interest in CassiniEx.

posted on Tuesday, March 16, 2004 5:41 PM

Feedback

# re: What is CassiniEx? 3/17/2004 10:42 AM gimbal

I am interested in your CassiniEx project and have downloaded and installed it. I develop websites/intranets on a laptop and have been using webMatrix.

My only gripe with the original Cassini was that it would not accept remote connections so others could see my work in progress.

I have amended the config file to allow remote connections(set the option to true) but I still have had no luck.

Have you any ideas? Am I just doing something really stupid? any help would be greatly apreciated.

cheers

Gimbal

# re: What is CassiniEx? 3/17/2004 12:16 PM Kilman

Hi gimbal. Thanks for checking out CassiniEx.

I just tried connecting to CassiniEx from a remote machine and everything worked fine.

The first thing that has to be done is to set AllowRemoteConnections = "true" in both the <WebsConfig> element as well as the specific web app you want to allow access to.

The next thing is to make sure your bindings are correct. CassiniEx determines which web app to connect to by looking at the host header, port, and virtual path.

In my test setup, I simply set Bindings = "localhost:80;mymachinename:80"

Now you should be able to access the web app using both http://localhost and http://mymachinename

Hope that make sense.

Kiliman

# re: looking good :) 3/18/2004 9:12 AM alex

I've tried Cassini when it first came out, but dismissed it as it couldn't run more then one site per instance if I recall correctly. This ability is what made me download and try CassiniEx.

I was impressed by the ease of configuration and adding new hosts. However CassiniEx failed my very first test :( It seems unable to gracefully handle change of the Web.config file and requires a restart each time. Perhaps you could look into that issue.

Also, I thought that adding onClick to the tray popup menu to launch the sites in default browser would be a great addition.

Finally, I noticed that application takes about 13mb in memory... being a laptop user I try to reduce memory footprint of all my applications or at least those that's going to stay running for long time. So i add this little code to my Delphi applications:

[code]
procedure TMainForm.ReduceMemoryTimerTimer(Sender: TObject);
var
processHandle : THandle;
minusOne : integer;
begin
// can't pass -1 directly to the function, so use this work around
minusOne := -1;
processHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID());
SetProcessWorkingSetSize(processHandle, minusOne, minusOne);
CloseHandle(processHandle);
end;
[/code]


Just thought I'd throw in my .02 :)

# re: What is CassiniEx? 3/18/2004 10:32 AM Kilman

Alex, you're right about the Web.config problem. Sorry for not testing that.

I've fixed it in my working version. I'll try to post that later today.

As for memory size, it's not as bad as it was. I used to load all the ApplicationHosts at startup. With a dozen web apps, that was murder on RAM. The current version now only loads them on demand.

I'm planning on adding an Idle property to unload the AppDomain if it's idle for say 60 minutes.

Kiliman

# re: What is CassiniEx? 10/20/2004 11:27 AM Martin Möbius

Today CassiniEx made my day . So Thank you!
Its not allowed to use IIS on our development machines and our save development intranet is far from being setup.
My first try with IssueTracker went good, so I will go home now.
If windows authentication could make it into a future version ... ;)

Comments have been disabled. Please use Contact Form to reach me. Thanks!