NAME
XSP - Mono ASP.NET Web Server (xsp and xsp2)
SYNOPSIS
xsp [options]
or
mod-mono-server2 [options]
or
fastcgi-mono-server2 [options]
DESCRIPTION
XSP, mod-mono-server2 and fastcgi-mono-server2 are hosts for ASP.NET-
based applications.
If run as `xsp', the process provides a minimalistic web server which
hosts the ASP.NET runtime and can be used to test and debug web
applications that use the System.Web facilities in Mono. This server
is most convenient for testing and running small sites, does not offer
everything a production web server offers.
`mod-mono-server2' and 'fastcgi-mono-server2' are both ASP.NET runtimes
hosts that can communicate with another web server (at the time of this
writing, Apache 1.3-2.2 were supported through mod_mono and several
other web servers through FastCGI). This mechanism is better used for
high-traffic servers or production systems, since it can integrate with
the main HTTP server and leverage all of the optimizations and
extensions of an existing server, while providing the ASP.NET runtime.
You can choose the communication channel used between mod_mono and mod-
mono-server2. If you provide a --filename option, a unix socket is
used, otherwise you can give --port to use a TCP socket.
OPTIONS
--address addr
Sets the IP address to listen on. By default it's 0.0.0.0 for
xsp and 127.0.0.1 for mod-mono-server2. AppSettings key name:
MonoServerAddress
--port PORT
Changes the default port where the XSP server will listen to
requests. By default XSP listens on port 8080 and mod-mono-
server2 has no default. AppSettings key name: MonoServerPort
--filename file (mod-mono-server2 and fastcgi-mono-server2)
The unix socket file name to listen on. Default value:
/tmp/mod_mono_server (fastcgi-mono-server2: /tmp/fastcgi-mono-
server2) AppSettings key name: UnixSocketFileName (fastcgi-mono-
server2: MonoUnixSocket)
--root PATH
The root directory for XSP. The default is the directory where
XSP is executed. The current directory will be changed to this
one before creating any application. AppSettings key name:
MonoServerRootDir
--appconfigfile FILENAME
Adds application definitions from the XML configuration file.
See sample configuration file that comes with the server
(sample.webapp) and WEBAPP FILE FORMAT below. AppSettings key
name: MonoApplicationsConfigFile
--appconfigdir DIR
Adds application definitions from all XML files found in the
specified directory DIR. Files must have '.webapp' extension.
AppSettings key name: MonoApplicationsConfigDir
--applications APPS
A comma separated list of virtual directory and real directory
for all the applications we want to manage with this server. The
virtual and real dirs. are separated by a colon. The default
value is '/:.'.
Some examples:
'/:.' The virtual / is mapped to the current directory.
'/blog:../myblog'
The virtual /blog is mapped to ../myblog
'/:.,/blog:../myblog'
Two applications like the above ones are handled.
myhost.someprovider.net:/blog:../myblog
The virtual /blog at myhost.someprovider.net is mapped to
../myblog.
--master
This instance will be used to by mod_mono to create ASP.NET
applications on demand. If this option is provided, there is no
need to provide a list of applications to start. This applies
only to mod-mono-server2.exe. --nonstop By default xsp/mod-
mono-server2 will stop processing requests when the return key
is pressed. Use this to avoid this behavior.
--no-hidden
Do not protect hidden files/directories from being accessed by
clients. Hidden files/directories are those with Hidden
attribute on Windows and whose name starts with a dot on Unix.
Any file/directory below a hidden directory is inacessible. This
option turns the default behavior of protecting such locations
off. If your application does not contain any hidden
files/directories, you might want to use this option as the
checking process has a per-request cost. AppSettings key name:
MonoServerCheckHiddenFiles (a boolean accepting 'true' or
'false')
--https
Enables HTTPS support on the server, you must supply an X.509
certificate and a private key with either the --cert/--pkfile
options or with the --p12file (which combines both the
certificate and the private key into a single file).
To use you must first create an X.509 certificate for your server, for
example:
$ makecert -r -eku 1.3.6.1.5.5.7.3.1 -n "CN=server" -p12 server.p12 s3kr3t
Mono MakeCert - version 1.1.9.0
X.509 Certificate Builder
Copyright 2002, 2003 Motus Technologies. Copyright 2004-2005 Novell. BSD licensed.
Success
Then you must pass the following flags to xsp:
$ xsp --https --p12file server.p12 --pkpwd s3kr3t
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--https-client-accept
Like --https this enables HTTPS support on the server. However
this option also send an "invitation" to clients to provide
client-certificates to authenticate themselves. Client are free
to provide, or not, a client certificate. Web application can
detect if a client certificate is used and react accordingly.
Most web browser will not send a client certificate unless they
have been explicitly requested to do so.
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--https-client-require
Like --https this enables HTTPS support on the server. However
this option also requires clients to use client-certificates to
authenticate themselves. Client who do not provide client
certificates will receive an error. Note that client may send an
empty certificate structure so web application should check the
certificate content.
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--p12file FILENAME
Used to specify the PKCS#12 file to use. This file includes both
the X.509 certificate and the private key required to encrypt
the HTTP traffic.
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--cert FILENAME
Used to specify the server X.509 certificate file. This is
normally used with the --pkfile.
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--pkfile FILENAME
Used to specify the path to the private keyfile. The PVK format
isn't very secure and you should use the PKCS#12 format
(--p12file option) to store new private keys.
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--pkpwd PASSWORD
If your private key is password protected, PASSWORD is the
password used to decote the private key. This option works for
both PVK and PKCS#12 formats.
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--protocol PROTOCOL
Specifies which protocols are available for encrypting the
communications. The possible values are Default, Tls and Ssl3.
Ssl2 isn't supported. The default value is "Default" which
auto-detect the client protocol and adjust the server protocol
accordingly.
This option is only valid for XSP. For mod_mono you should configure
Apache for SSL/TLS.
--terminate (mod-mono-server2 only)
Gracefully terminates a running mod-mono-server2 instance. All
other options but --filename or --address and --port are ignored
if this option is provided.
--version
Displays version information and exits.
--help Shows the list of options and exits.
--verbose
Prints extra messages. Useful for debugging.
--pidfile FILE
Writes the xsp PID to the specified file.
MONO RUNTIME OPTIONS
xsp and xsp2 are scripts that call mono. If you want to pass options
to mono (for example, options to get line numbers in stack traces), you
can use the MONO_OPTIONS environment variable when invoking xsp or
xsp2.
For example:
$ MONO_OPTIONS=--debug xsp2
DEFAULT INDEX FILES
You can choose which files are considered as index using xsp.exe.config
configuration file like this:
<appSettings>
<add key="MonoServerDefaultIndexFiles"
value="index.aspx" />
</appSettings>
By default, it has index.aspx, Default.aspx, default.aspx, index.html
and index.htm. The order matters.
WEBAPP FILE FORMAT
The format of the .webapp files used for --appconfigfile and
--appconfigdir is:
<apps>
<web-application>
<name>{appname}</name>
<vhost>{virtual host for application}</vhost>
<vport>{port for the application}</vport>
<vpath>{virtual directory in apache}</vpath>
<path>{physical path to aspx files}</path>
<!-- <enabled> is true by default -->
<enabled>{true|false}</enabled>
</web-application>
</apps>
You can include any number of <web-application> nodes, one per ASP.NET
application to run.
There's a sample.webapp file in the XSP samples directory.
AUTHORS
The Mono XSP server was written by Gonzalo Paniagua Javier
(gonzalo@ximian.com). Fastcgi-mono-server2 was written by Brian Nickel
<http://kerrick.wordpress.com>.
ENVIRONMENT VARIABLES
MONO_ASPNET_NODELETE
If set to any value, temporary source files generated by ASP.NET
support classes will not be removed. They will be kept in the
user's temporary directory.
FILES
Web.config, web.config
ASP.NET applications are configured through these files, the
configuration is done on a per-directory basis. For more
information on this subject see the http://www.mono-
project.com/Config_system.web page.
SEE ALSO
mono(1),dbsessmgr(1),asp-state(1),mod_mono(8),makecert(1)
For more information on creating certificates, see:
http://pages.infinit.net/ctech/20050701-10.html
System.Web, System.Web.Hosting namespaces.
http://www.asp.net is Microsoft's official site for ASP.NET
MORE INFORMATION
The Mono project (http://www.go-mono.com) is a collaborative effort led
by Novell (http://www.novell.com) to implement an open source version
of the .NET Framework.
MAILING LISTS
Mailing lists are listed at the http://www.mono-
project.com/Mailing_Lists