Liens
- MVC4 et MVC5 - non supporté (Partial, no async features supported)
Compilation
|
# compilation du fichier MyClass.cs avec une référence à l'assembly System.Web
mcs MyClass.cs /r:System.Web
|
SSL / TLS
SSL permet le chiffrement des données, mais utilise aussi un certificat pour s'assurer de l'identité du site destinataire.
SSL utilise des certificats X.509 liant un site à une clé publique. Les certificats sont délivrés par une Autorité de Certification.
Par défaut Mono ne contient aucun certificat et ne fait donc confiance à aucun site.
SSL / TLS in Mono
Certificats
|
# liste les certificats de l'utilisateur courant pour Mono
certmgr -list -c Trust
# liste les certificats de la machine pour Mono
certmgr -list -c -m Trust
# importez les certificats dans l'emplacement des certificats Mono de l'utilisateur courant
# mise à jour stricte (ajouts et suppressions)
mozroots --import --sync
# demande confirmation avant la suppression d'un certificat
mozroots --import --ask-remove
|
Décompilateurs
Chemins vers les DLL
- /usr/lib/mono/4.5
- /usr/lib/mono/4.0
- /usr/lib/mono/2.0
- /usr/lib/monodevelop/bin
|
# installation de XSP: un serveur web léger, idéal pour réaliser des tests avec Mono et ASP.NET
sudo pacman -S xsp
# lancer le serveur fastcgi
fastcgi-mono-server4 /applications=asptest.domaine.fr:/:/srv/http/asptest/ /socket=tcp:127.0.0.1:9000
# hostname: asptest.domaine.fr
# virtual root: /
# physical path: /srv/http/asptest/
|
asptest.conf
|
server {
listen 80;
server_name asptest;
root /srv/http/asptest;
error_log /var/log/nginx/asptest_error.log;
location / {
index index.html index.htm default.aspx Default.aspx;
fastcgi_index Default.aspx;
fastcgi_pass 127.0.0.1:9000;
include /etc/nginx/fastcgi_params;
fastcgi_param PATH_INFO "";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
|
/etc/systemd/system/fastcgi-mono-server4.conf
|
[Unit]
Description=FastCGI mono server 4 for the healthmanager web site
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/fastcgi-mono-server4 /applications=asptest.domaine.fr:/:/srv/http/asptest/ /socket=tcp:127.0.0.1:9000 /logfile=/var/log/mono/fastcgi.log
ExecStop=/usr/bin/kill $MAINPID
User=http
Group=http
[Install]
WantedBy=multi-user.target
|
MVC
mvctest.conf
|
location / {
# Pas d'index car MVC s'occupe du routing
#index index.html index.htm default.aspx Default.aspx;
# et index fast cgi directement à la racine du site
fastcgi_index /;
|
Apache
Use mod_mono, a module that allows Apache to serve ASP.NET applications.
|
sudo pacman -S mod_mono
|
/etc/httpd/conf/httpd.conf
|
Include conf/mod_mono.conf
|
/etc/xsp/xsp.webapp
|
<apps>
<web-application>
<name>Root</name>
<vpath>/</vpath>
<path>/srv/http/html/xsp</path>
<vhost>localhost</vhost>
</web-application>
</apps>
|
|
# lancer le server
xsp4
|
The resource cannot be found
Lancez le serveur dans le répertoire contenant l'application web.
Code inline
|
<%@ Page Language="C#" %>
<script runat="server">
private void btnOkClicked(object sender, EventArgs e)
{
name.InnerHtml = tbName.Text;
tbName.Text = "";
tbName.Focus();
}
</script>
<!DOCTYPE html>
<html>
<head runat="server">
<meta charset="UTF-8" />
<title>Hello</title>
</head>
<body>
<p>
Hello <span id="name" runat="server"></span> !!!
</p>
<form id="form1" runat="server">
<asp:TextBox id="tbName" runat="server"></asp:TextBox>
<asp:Button id="btnOk" runat="server" Text="Ok" OnClick="btnOkClicked" />
</form>
|
Code behind
Hello.aspx
|
<%@ Page Language="C#" Inherits="WebForms.Hello" %>
|
Hello.aspx.cs
|
using System;
using System.Web;
using System.Web.UI;
namespace WebForms
{
public partial class Hello : System.Web.UI.Page
{
protected System.Web.UI.HtmlControls.HtmlGenericControl name;
protected System.Web.UI.WebControls.TextBox tbName;
public void btnOkClicked(object sender, EventArgs e)
{
name.InnerHtml = tbName.Text;
tbName.Text = "";
tbName.Focus();
}
}
}
|
|
Il faut compiler le fichier Hello.aspx.cs sinon on obtient l'erreur Cannot find type WebForms.Hello
mcs /target:library Hello.aspx.cs /r:System.Web /out:bin/Hello.aspx.dll |
Web.config
Web.config
|
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
|
Erreurs
Cannot find type xxx.Global
Error parsing a resource required to service this request. Cannot find type xxx.Global
Le dossier bin doit se trouver au niveau du DocumentRoot.
System.UnauthorizedAccessException: Access to the path "/srv/http/.mono" is denied
(info) Auto generated encryption keys not saved:
System.Security.SecurityException: No access to the given key --->
System.UnauthorizedAccessException: Access to the path "/srv/http/.mono" is denied.
Créez le dossier /srv/http/.mono et le rendre accessible en écriture pour l'utilisateur http.
500 No Application Found
Le serveur FastCGI fastcgi-mono-server n'est pas lancé.
Could not find file "/srv/http/WebApplicationMVC/bin\roslyn\csc.exe"
Les backslash posent problème.
|
MONO_IOMAP=all fastcgi-mono-server4 /applications=asptest.domaine.fr:/:/srv/http/asptest/ /socket=tcp:127.0.0.1:9000
|
Plus maintenu.
WPF
Pas d'implémentation de WPF pour Mono pour l'instant. Source