FAQ ASP.NET / Delphi.NET

FAQ ASP.NET / Delphi.NETConsultez toutes les FAQ
Nombre d'auteurs : 15, nombre de questions : 90, dernière mise à jour : 16 juin 2021
Sommaire→Coté serveur- Comment afficher tous les fichier d'un répertoire du serveur ?
- Comment lancer un exe sur le serveur via une page aspx ?
- Comment changer le timeout d'une application web ?
- Comment désactiver la protection contre les injections de scripts ?
- Comment rediriger les erreurs de mon application vers une page personnalisée ?
- Comment envoyer un mail décrivant l'erreur quand mon application lève une exception ?
- Comment rendre une page publique quand j'utilise le mode authentification form ?
- Comment uploader un fichier sur le serveur via une page asp.net ?
- Pourquoi l'upload de fichiers de plus de 4Mo lève une exception ?
Nous allons afficher tous les fichiers d'un répertoire dans une ListBox :
var dir : DirectoryInfo ;
dir := DirectoryInfo.Create('C:\MonChemin') ;
MalLsttBox.DataSource := dir.GetFiles('*.*') ;
MalLsttBox.DataBind() ;Note : Attention à bien paramétrer vos droits de manière à ce que le user ASPNET puisse parcourir le répertoire ;)
Il faut utiliser la classe :
System.Diagnostics.ProcessVoici un petit exemple simple pour demarrer un .exe sur le serveur :
var Processus : System.Diagnostics.Process ;
Processus := System.Diagnostics.Process.Create() ;
Processus.StartInfo.FileName := 'MonApplis.exe' ;
Process.StartInfo.Arguments := 'Monargument' ;
Processus.Start() ; // retourne un booléen confirmant le démarage du processOn arrêtera le process avec :
Processus.Close() ;Pour plus d'informations sur la classe System.Diagnostics.Process référez vous à msdn.
Lien : Process Class (liens MDSN)
Pour changer le timeout d'une application web, dans le fichier web.config :
<configuration>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
<httpRuntime maxRequestLength="8096" executionTimeout="600"/>
</system.web>
</configuration>
Si vous voulez modifier le timeout d'une seule page, au début de la page aspx :
<%
Server.ScriptTimeout=200
%>
ASP.NET 1.1 intègre par défaut un contrôle du flux envoyé par http afin de bloquer tout flux pouvant contenir des scripts dangereux.
Pourtant, il arrive que l'on ait besoin d'envoyer un flux html via nos formulaires. Dans ce cas précis, au début de votre page aspx il faut mettre :
<%
Page ValidateRequest="false"
%>Dans le fichier web.config de votre application :
<configuration>
<system.web>
<customErrors defaultRedirect="erreurinconnue.htm" mode="RemoteOnly">
<error statusCode="500" redirect="500.htm"/>
<error statusCode="404" redirect="404.htm"/>
</customErrors>
</system.web>
</configuration>
Dans le Global.asax :
procedure TGlobal.Application_Error(sender: System.Object; e: EventArgs);
var ex : System.Exception ;
message : MailMessage ;
m : String ;
begin
// Se déclenche lorsqu'une erreur se produit
ex := Server.GetLastError().GetBaseException ;
message.From := 'xxxxx' ;
message.To := 'xxxx' ;
message.Subject := '::: Erreur MONAPPLICATION :::' ;
m := '<b>Erreur sur le site</b>' + '<br><br>' +
'Message : ' + ex.Message.ToString() + '<br><br>' +
'Détails : ' + '<br><br>' +
'Date : ' + DateTime.Now.ToString() + '<br><br>' +
'Pile : ' + ex.StackTrace.ToString() + '<br><br>' +
'Source : ' + ex.Source.ToString() + '<br><br>' +
'Url :' + Request.Url.ToString() ;
message.BodyFormat := MailFormat.Html ;
message.Priority := MailPriority.High ;
message.Body := m ;
SmtpMail.SmtpServer := 'MAILSERVER' ;
SmtpMail.Send(message) ;
end ;
Ne pas oublier au début de votre global.asax :
uses System.Web.MailSi vous utilisez la méthode :
<authentication mode="Forms">Dans votre site et que vous souhaitez rendre certainnes pages accessibles à tout le monde sans authentification, rajoutez dans le web.config, aprés le </system.web> :
<location path="test.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
Dans cet exemple nous allons voir comment uploader un fichier sur le serveur via une page ASP.NET.
Tout d'abord on place un contrôle input file sur la page aspx :
<INPUT id="tboxMonFichier" type="file" size="75" name="tboxMonFichier" runat="server">
Qui est déclaré dans le code behind :
Protected tboxMonFichier : System.Web.UI.HtmlControls.HtmlInputFile ;
Puis dans le code behind :
var monchemin : string ;
if not tboxMonFichier.PostedFile.FileName.Length = 0 then
begin
monchemin := 'C:\repfilesupload' ;
tboxMonFichier.PostedFile.SaveAs( monchemin +
tboxMonFichier.PostedFile.FileName.Substring(
tboxMonFichier.PostedFile.FileName.LastIndexOf('\') + 1) ) ;
end ;
Attention : Veillez à mettre les droits nécessaires sur le répertoire d'upload ;-)
Lien : Pourquoi l'upload de fichiers de plus de 4Mo lève une exception ?
Dans votre fichier web.config, par défaut vous avez :
<configuration>
<system.web>
<httpRuntime maxRequestLength="4096" />
</system.web>
</configuration>Il faut changer la valeur de httpRuntime maxRequestLength suivant vos besoins.
Lien : Comment uploader un fichier sur le serveur via une page asp.net ?



