ASP.NET

De Banane Atomic
Révision datée du 7 février 2018 à 12:29 par Nicolas (discussion | contributions) (→‎Entity xxx is not defined)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigationAller à la recherche

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