Parsing "multipart / form-data" in.NET/C#
je dois analyser quelques données POST entrées thats dans un format" multipart/form-data " pour extraire le nom d'utilisateur passé et le mot de passe. Quelqu'un sait comment faire cela sans écrire mon propre code d'analyse?
notez que les données POST input ressemblent à quelque chose comme ceci:
---------1075d313df8d4e1d
Content-Disposition: form-data; name="username"
x@y.com
---------1075d313df8d4e1d
Content-Disposition: form-data; name="password"
somepassword
---------1075d313df8d4e1d--
pour démostrer mon code ressemble à quelque chose comme ça en ce moment:
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "Login", BodyStyle = WebMessageBodyStyle.Bare)]
public Stream Login(Stream input)
{
string username = String.Empty;
string password = String.Empty;
StreamReader sr = new StreamReader(input);
string strInput = sr.ReadToEnd();
sr.Dispose();
// Help needed here:
usermame = ?.Parse(strINput, "username");
password = ?.Parse(strINput, "password");
// blah blah blah return login XML response as a Stream
}
2 réponses
C'est Marc qui l'a. La façon la plus facile d'utiliser le ASP.NET le mode des exigences de compatibilité doit appliquer L'attribut AspNetCompatibilityRequirementsMode à votre opération. Vous avez ensuite accès au formulaire HttpContext params . Voici comment vous vous y prendriez:
[OperationContract]
[WebInvoke(Method = "POST",
UriTemplate = "Login",
BodyStyle = WebMessageBodyStyle.Bare)]
[AspNetCompatibilityRequirements(RequirementsMode =
AspNetCompatibilityRequirementsMode.Required)]
public Stream Login(Stream input)
{
string username = HttpContext.Current.Request.Params["username"];
string password = HttpContext.Current.Request.Params["password"];
}
ne pouvez-vous pas poster à un régulier ASP.NET page (peut-être un ashx/handler, ou MVC) et juste utiliser Request.Form
? Cela prend en charge multi-part.