ASP.NET

De Banane Atomic
Aller à la navigationAller à la recherche
La version imprimable n’est plus prise en charge et peut comporter des erreurs de génération. Veuillez mettre à jour les signets de votre navigateur et utiliser à la place la fonction d’impression par défaut de celui-ci.

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

Asp.svg
<%-- commentaires --%>

Page d'index: Default.aspx

ASP.NET Controls

Chemins

Csharp.svg
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

Csharp.svg
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

Csharp.svg
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

Csharp.svg
// dans le code behind d'une page ASP.NET
string htmlEncodedString = Server.HtmlEncode("ma chaîne");
// <tag> → &lt;tag&gt;

// 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

Csharp.svg
// url: http://localhost/Default.aspx?argument_1=value_1&argument_2=value_2
string valeur = Request.QueryString["argument_1"];
if (valeur != null)
{ }

Session

Csharp.svg
Session["clé"] = un_objet;

var un_objet = Session["clé"] as MaClasse;
if (un_objet != null)
{ }

Appeler une méthode du code-behind

Asp.svg
<%@ Page Language="C#" Inherits="MonEspace.MaPage" %>

<% MaMéthode(); %>
Csharp.svg
namespace MonEspace
{
    public partial class MaPage : Page
	{
            public void MaMéthode() {
                Response.Write("Texte");

Changer le titre de la page

Csharp.svg
this.Header.Title = "Nouveau titre";

web.config

web.config
<?xml version="1.0"?>

<!-- Balise racine -->
<configuration>
  <!-- Élément de configuration ASP.NET -->
  <system.web>

compilation

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>

customErrors

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"/>

authentication

web.config
<!-- mode: Windows (défaut), Forms, Passport, None -->
<authentication mode="None"></authentication>

trace

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" />

sessionState

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" />

globalization

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" />
Csharp.svg
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 &amp;

Global.asax

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) { }
}

Page_Load

La méthode est appelée à chaque fois que la page est chargée.

Csharp.svg
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