2009-02-14 4 views
0

HttpContext context = ((HttpApplication) sender) .Context;Explication sur la façon dont ce code utilise l'espace de noms Web

Dans l'exemple ci-dessus, pourquoi est-ce que nous envoyons l'expéditeur à HTTPApplication et non à HTTPContext?

En outre, quel est le but des parenthèses? Je sais qu'ils sont pour la coulée, mais si vous débarrasser de HttpApplication et les crochets entourant, qui laisse:

(sender).Context; 

Pourquoi ne pas sender.Context? Ou génériquement, pourquoi l'utilisation de crochets de toute façon? Je me souviens vaguement que c'était une façon de lancer, mais je ne me souviens pas des détails.

En second lieu:

string url = context.Request["url"]; 
int cacheDuration = Convert.ToInt32(context.Request["cache"] ?? "0"); 
string contentType = context.Request["type"]; 

EDIT: Je réalisais que vous pouvez écrire:

collection["key"] = "value"; 

Ceci est pour une collection à base de clés et que vous stockez la valeur où il est une clé appelée « clé » . Alors ai-je raison de penser que vous obtenez l'URL où la clé est "url"?

Je sais que cela utilise HTTPContext, mais dans l'indexeur, que signifie "url"? C'est juste une chaîne disant url, pas même une vraie url. De même pour "cache" et "type". Si l'on écrit "type", comme dans la dernière ligne de code, cela récupère-t-il le type (HTTP/HTTPS) utilisé?

Merci

Répondre

1

Il a besoin de jeter sender-HttpApplication parce que (probablement) qui est le type réel - il alors obtient unHttpContext via la propriété HttpApplication.Context.

Étant donné que avez besoin de la conversion, le bracketing est raisonnable.

Pour la deuxième partie: "url", "cache" et "type" ne sont que les noms des paramètres de la requête (qui sont documented à venir des cookies, la soumission du formulaire, les variables du serveur ou des paramètres de requête d'URL). Donc, l'URL d'origine pourrait être:

http://server.com/Foo.aspx?url=someurl&cache=10&type=text/plain

... ou les valeurs peuvent provenir de biscuits, etc. J'espère que, compte tenu de cette information, il serait clair où ils avaient vraiment proviennent de dans ce cas :)

+0

Toutes mes excuses pour plus de clarté. Je n'ai pas pu obtenir le code à afficher dans sa vue de code. Quoi qu'il en soit, je ne vais pas éditer en même temps pour empêcher la corruption de données! :) – dotnetdev

+0

Ce lien couvre tout parfaitement. Merci! – dotnetdev

Questions connexes