Liens
Templates Visual Studio
Empty |
Aucun contenu
|
Web Forms |
|
MVC |
|
Web API |
Services HTTP RESTful
|
Single Page Application |
|
Azure API App |
REST API pour Azure
|
Azure Mobile Service |
|
Astuces
|
<%-- commentaires --%>
|
Page d'index: Default.aspx
Chemins
|
var serverAbsolutePath = Request.PhysicalApplicationPath;
var serverAbsolutePath = Server.MapPath(".");
// /srv/http/MyServer
// chemin absolu vers le dossier contenant l'application hébergées sur IIS
string hostedApplicationPath = HttpRuntime.AppDomainAppPath;
// Transformer un chemin relatif en chemin absolut
string absolutePath = Server.MapPath("fichier-local.txt");
// fichier-local.txt → /srv/http/MyServer/fichier-local.txt
// en dehors du code-behind il faut utiliser:
string absolutePath = HttpContext.Current.Server.MapPath("fichier-local.txt");
|
URI
|
Uri uri = HttpContext.Current.Request.Url;
uri.Scheme; // http
uri.Host; // dernier définit dans /etc/hosts
uri.Port; // 80
HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"]; // ip locale 192.168.0.1
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; // ip du routeur 192.168.0.254
|
Transformer un string en URL
|
string urlEscapedString = Uri.EscapeUriString("http://url/brut");
string urlBrut = Uri.UnescapeUriString(urlEscapedString);
|
|
Au contraire d'Apache, sur NGINX le single-quote n'est pas échappé en %27 |
Transformer un string pour l'affichage
|
// dans le code behind d'une page ASP.NET
string htmlEncodedString = Server.HtmlEncode("ma chaîne");
// <tag> → <tag>
// avec une référence à System.Web
HttpUtility.HtmlEncode ("ma chaîne");
|
Passer des arguments à une page
|
Request.QueryString comme Session ne peuvent être utilisés dans le constructeur de la page. |
Dans l'url
|
// url: http://localhost/Default.aspx?argument_1=value_1&argument_2=value_2
string valeur = Request.QueryString["argument_1"];
if (valeur != null)
{ }
|
Session
|
Session["clé"] = un_objet;
var un_objet = Session["clé"] as MaClasse;
if (un_objet != null)
{ }
|
Appeler une méthode du code-behind
|
<%@ Page Language="C#" Inherits="MonEspace.MaPage" %>
<% MaMéthode(); %>
|
|
namespace MonEspace
{
public partial class MaPage : Page
{
public void MaMéthode() {
Response.Write("Texte");
|
Changer le titre de la page
|
this.Header.Title = "Nouveau titre";
|
web.config
|
<?xml version="1.0"?>
<!-- Balise racine -->
<configuration>
<!-- Élément de configuration ASP.NET -->
<system.web>
|
web.config
|
<!-- Configure tous les paramètres de compilation qu'ASP.NET utilise pour compiler des applications -->
<!-- debug: spécifie s'il convient de compiler les binaires en debug ou en commerciale. (défaut = false) -->
<!-- defaultLanguage: spécifie le langage de programmation par défaut des fichiers de compilation dynamique. (défaut = "vb") -->
<compilation debug="true" defaultLanguage="C#">
<!-- Liste de noms d'assemblies qui sont utilisés pendant la compilation d'une ressource ASP.NET -->
<assemblies></assemblies>
|
web.config
|
<!-- defaultRedirect: spécifie l'URL par défaut vers laquelle rediriger un navigateur si une erreur se produit -->
<!-- mode: On → utilisation de la redirection en cas d'erreur
Off → affichage des erreurs détaillées
RemoteOnly (défaut) → utilisation de la redirection en cas d'erreur pour les clients distant
et affichage des erreurs détaillées à l'hôte local -->
<customErrors defaultRedirect="GenericError.htm" mode="RemoteOnly">
<!-- Redirection vers une page spécifique pour une erreur donnée -->
<error statusCode="500" redirect="InternalError.htm"/>
|
web.config
|
<!-- mode: Windows (défaut), Forms, Passport, None -->
<authentication mode="None"></authentication>
|
web.config
|
<!-- enabled: spécifie si le traçage est activé pour une application (défaut = false) -->
<!-- localOnly: Spécifie si la visionneuse de trace est disponible uniquement sur le serveur Web hôte (défaut = true) -->
<!-- pageOutput: Spécifie si la sortie du traçage est rendue à la fin de chaque page.
Sinon elle est accessible uniquement via l'utilitaire de traçage. (défaut = false) -->
<trace enabled="true" localOnly="true" pageOutput="true" />
|
web.config
|
<!-- mode: emplacement de stockage des valeurs de l'état de session.
InProc (valeur par défaut) → L'état de session est en cours avec un processus de traitement ASP.NET. -->
<!-- cookieless: spécifie le mode d'utilisation des cookies pour une application Web. (défaut = UseCookies) -->
<!-- timeout: durée en minutes d'une session. (défaut = 20) -->
<sessionState mode="InProc" cookieless="false" timeout="20" />
|
web.config
|
<!-- requestEncoding: codage supposé de chaque demande entrante. (défaut = utf-8) -->
<!-- responseEncoding: codage du contenu des réponses. (défaut = utf-8) -->
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
|
key
web.config
|
<configuration>
<appSettings>
<add key="KeyId" value="KeyValue" />
|
|
string keyValue = ConfigurationManager.AppSettings["KeyId"];
string keyValue = ConfigurationManager.AppSettings.Get("KeyId");
|
Errors
Entity xxx is not defined
web.config étant un fichier xml, il faut remplacer les & par des &
Singleton optionnel capable de gérer des évènements du niveau application.
Global.asax.cs
|
public class Global : System.Web.HttpApplication
{
protected void Application_Start (Object sender, EventArgs e) { }
protected void Session_Start (Object sender, EventArgs e) { }
protected void Application_BeginRequest (Object sender, EventArgs e) { }
protected void Application_EndRequest (Object sender, EventArgs e) { }
protected void Application_AuthenticateRequest (Object sender, EventArgs e) { }
protected void Application_Error (Object sender, EventArgs e) { }
protected void Session_End (Object sender, EventArgs e) { }
protected void Application_End (Object sender, EventArgs e) { }
}
|
La méthode est appelée à chaque fois que la page est chargée.
|
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{ /* Page.IsPostBack = false si c'est la première fois que la page est chargée */ }
}
|
Publier
Clique-droit sur le projet → Publish