[Désolé pour une question compliquée. Je crois que je vise .Net 2.0 (pour l'instant)]ASP.Net Comment appliquer le format d'URL HTTP get?
Salut, je suis un noob ASP.NET. Pour commencer, je construis une page qui analyse une chaîne d'URL et remplit une table dans une base de données. Je veux que la chaîne à proprement parler de la forme:
http://<server>:<port>/PageName.aspx?A=1&B=2&C=3&D=4&E=5
L'ordre des arguments n'a pas d'importance, je ne veux pas que l'un d'eux manque, ou des extras. Voici ce que j'ai essayé (oui, il est laid, je veux juste faire fonctionner en premier):
#if (DEBUG)
// Maps parameter names to their human readable names.
// Used for error checking.
private static Dictionary<string, string> paramNameToDisplayName = new Dictionary<string, string> {
{ "A", "a"},
{ "B", "b"},
{ "C", "c"},
{ "D", "d"},
{ "E", "e"},
{ "F", "f"},
};
[Conditional("DEBUG")]
private void validateRequestParameters(HttpRequest request)
{
bool endResponse = false;
// Use foreach var
foreach (string expectedParameterName in paramNameToDisplayName.Keys)
{
if (request[expectedParameterName] == null)
{
Response.Write(String.Format("No parameter \"{0}\", aka {1} was passed to the configuration generator. Check your URL string/cookie.",
expectedParameterName, paramNameToDisplayName[expectedParameterName]));
endResponse = true;
}
}
// Use foreach var
foreach (string actualParameterName in request.Params)
{
if (!paramNameToDisplayName.ContainsKey(actualParameterName))
{
Response.Write(String.Format("The parameter \"{0}\", was passed to the configuration generator, but it was not expected. Check your URL string/cookie.",
actualParameterName));
endResponse = true;
}
}
if (endResponse)
{
Response.End();
}
}
#endif
et il fonctionne bien, sauf qu'il se plaint de toutes sortes d'autres choses:
http://localhost:1796/AddStatusUpdate.aspx?X=0
Aucun paramètre "a", alias a été transmis au générateur de configuration. Vérifiez votre URL string/cookie. Aucun paramètre "B", alias b, n'a été transmis au générateur de configuration. Vérifiez votre chaîne d'URL/cookie. Aucun paramètre "C", alias c a été passé au générateur de configuration. Vérifiez votre URL string/cookie. Aucun paramètre "D", alias d, n'a été transmis au générateur de configuration. Vérifiez votre URL string/cookie.No paramètre "E", alias e a été transmis au générateur de configuration. Vérifiez votre chaîne d'URL/cookie. Aucun paramètre "F", alias f a été passé au générateur de configuration. Vérifiez votre chaîne d'URL/cookie. Le paramètre "X", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "ASP.NET_SessionId", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "ALL_HTTP" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "ALL_RAW", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "APPL_MD_PATH" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "APPL_PHYSICAL_PATH" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "AUTH_TYPE", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "AUTH_USER" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "AUTH_PASSWORD" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "LOGON_USER" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "REMOTE_USER" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CERT_COOKIE", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CERT_FLAGS", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CERT_ISSUER" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CERT_KEYSIZE", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "CERT_SECRETKEYSIZE" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CERT_SERIALNUMBER" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CERT_SERVER_ISSUER" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "CERT_SERVER_SUBJECT" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CERT_SUBJECT", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CONTENT_LENGTH", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "CONTENT_TYPE", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne URL/cookie.Le paramètre "GATEWAY_INTERFACE" a été transmis au générateur de configuration, mais il n'était pas attendu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "HTTPS", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "HTTPS_KEYSIZE" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "HTTPS_SECRETKEYSIZE" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "HTTPS_SERVER_ISSUER" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "HTTPS_SERVER_SUBJECT" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "INSTANCE_ID" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "INSTANCE_META_PATH", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "LOCAL_ADDR" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "PATH_INFO", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "PATH_TRANSLATED" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "QUERY_STRING", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "REMOTE_ADDR" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "REMOTE_HOST", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "REMOTE_PORT" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "REQUEST_METHOD", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "SCRIPT_NAME" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "SERVER_NAME" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "SERVER_PORT" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "SERVER_PORT_SECURE" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "SERVER_PROTOCOL" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "SERVER_SOFTWARE" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "URL" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "HTTP_CACHE_CONTROL" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "HTTP_CONNECTION" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "HTTP_ACCEPT" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL string/cookie. Le paramètre "HTTP_ACCEPT_CHARSET" a été transmis au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "HTTP_ACCEPT_ENCODING", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "HTTP_ACCEPT_LANGUAGE", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "HTTP_COOKIE", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "HTTP_HOST", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre chaîne d'URL/cookie. Le paramètre "HTTP_USER_AGENT", a été passé au générateur de configuration, mais ce n'était pas prévu. Vérifiez votre URL/cookie.Thread a été abandonné.
Est-il possible pour moi de séparer les implicites et les paramètres explicites, ou est-ce pas faisable? Devrais-je même déranger? Peut-être que la philosophie de get est de simplement jeter ce qui n'est pas nécessaire.
Merci!
Merci! Il s'avère que j'ai besoin de génériques et de Linq pour que cela fonctionne. –
QUESTION: comment puis-je obtenir Contient pour fonctionner avec un comparateur insensible à la casse? J'ai vu l'option pour le deuxième paramètre; Je ne sais pas quelle classe générique implémente cette interface et fait ce que je veux. Merci! –
Request.QueryString.AllKeys.Contains (expectedParameterName, StringComparer.InvariantCultureIgnoreCase) –
derek