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
- 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.Process
Voici 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 process
On 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.Mail
Si 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 ?