Comment définir différents délais d'expiration pour différentes URL dans ASP.NET
J'ai envie de différent des limites de connexion pour certaines Url dans mon application. Certaines Url accepter les uploads de fichier et le besoin d'avoir une grande attente de la Connexion. Tous les autres URLs besoin d'un beaucoup plus petit délai pour éviter un déni de service et de ne pas gaspiller les ressources.
Actuellement, j'ai le Timeout de la Connexion à la propriété dans IIS définie pour l'ensemble du site à 60 minutes. Puis je l'ai fait dans le web.config:
<system.web>
<httpRuntime executionTimeout="480" maxRequestLength="1024" />
</system.web>
<location path="FileUpload/WriteFile.rails">
<system.web>
<httpRuntime executionTimeout="3600" maxRequestLength="512000" />
</system.web>
</location>
Donc, j'espérais que ce serait toutes les Url à 8 minutes de délai d'attente et de permettre à l'WriteFile.rails URL pour exécuter pendant 60 minutes. Au lieu de cela TOUTES les URLs sont autorisés à s'exécuter pendant 60 minutes. Comment puis-je obtenir IIS pour faire ce que je veux?
source d'informationauteur Gareth Farrington
Vous devez vous connecter pour publier un commentaire.
La question posée spécifiquement sur les délais d'attente, mais implique également la définition de maxRequestLength. Je vais essayer de donner vraiment une réponse exhaustive à ces deux questions (maintenant que j'ai passé plus d'une journée de travail).
Permet de dire que nous avons une URL unique sur notre site web que nous voulons pour le processus de téléchargement de fichiers. Nous voulons prendre jusqu'à un Gigaoctet de données sur cette URL et nous permettront aux clients d'être connecté pour, au plus, 1 heure. Toutes les autres Url, nous voulons permettre seulement 90 secondes de temps de connexion et un maximum de 4 MO dans le corps POST.
Paramètres Globaux
Vous devez d'abord globalement augmenter les limites de temps et de taille pour l'ensemble du site. Tout d'abord vous souhaitez définir le "Délai d'attente de Connexion" pour l'ensemble du site. Cela agit comme un absolu limite supérieure et il ne peut pas être défini à partir de la web.config. Le site web IIS7 a bon les instructions ici. Vous pouvez aussi le faire par programmation avec la
Microsoft.Web.Administration
bibliothèque livré avec IIS7/7.5:Ensuite, vous devez définir la taille maximale demander que le site vous permettra de. C'est dans un tout autre lieu, à la Demande Fitlering module. Ce module ne peut pas être installé par défaut sur IIS7. Nouveau Microsoft a les bonnes instructions pour savoir comment définir le
maxAllowedContentLength
par le biais de l'interface graphique. C'est quelque chose que vous pouvez définir à partir de l'intérieur du Web.config:Ce paramètre est évalué par rapport à la
Content-Length
en-tête et les demandes de plus que cela entraînera immédiatement une 404.13. Le cadre est en octets et ce qui vient ensuite est en kilo-octets, très cohérent ce IIS7.ASP.NET les Paramètres de
Ensuite, nous voulons pour couronner le tout de la ASP.NET demandes à 90 secondes/4MB. Cela peut être fait dans le web.config:
Pour effectuer les réglages à l'échelle mondiale le
system.web
balise est enveloppé dans unlocation
balise qui n'a pas depath
attribut. (Dans la question d'origine, je n'ai pas envelopper le système.balise web dans l'emplacement de la balise qui a probablement été la source de mon problème).maxRequestLength
est en kilo-octets, cette fois.Enfin, nous voulons permettre à nos spéciaux URL de téléchargement d'accepter d'énormes chargements. La définition de ces valeurs plus élevées que celles définies à l'échelle mondiale ne fonctionnent pas. Les valeurs globales remplacer ces paramètres.
Si tout le reste est mis en place, cela devrait le faire. Comme Peter Bromberg suggéré, vous pouvez ajouter autant de blocs que nécessaire pour augmenter les limites pour des Url spécifiques.
Une dernière remarque: en mode de débogage IIS ne pas respecter le Délai de Connexion ou executionTimeout paramètres, afin de vous permettre plus de temps pour le débogage. Afin de tester votre configuration sur un ordinateur du développeur, vous devriez faire un communiqué de construire et vous devez définir l'option " Activer le Serveur de Débogage paramètre pour
false
.Vous pouvez toujours définir la ScriptTimeout directement dans votre contrôleur de l'action. De cette façon, la configuration ne cassera pas si vous changez de routage.
Pour définir le délai d'attente pour une page spécifique, vous pouvez utiliser autant de <l'emplacement du web.config éléments nécessaires:
Tant que votre chemin est défini correctement, et le .rails d'extension est mappé à ASP.NET, cela devrait fonctionner. Se pourrait-il que l'ASP.NET moteur d'exécution n'est pas de traitement *.rails extensions?
NOTE:
L'homme qu'un moche poste de rédacteur en chef. Pourquoi ne pouvez-vous pas faire de s'échapper de l'utilisateur?