Разбор "multipart/form-data" в .NET/С#
Получил вопрос .NET/С#...
Мне нужно проанализировать некоторые данные входных данных, которые находятся в формате "multipart/form-data", чтобы извлечь переданное имя пользователя и пароль. Кто-нибудь знает, как это сделать, не написав свой собственный синтаксический код?
Обратите внимание, что данные входных данных выглядят примерно так:
---------1075d313df8d4e1d
Content-Disposition: form-data; name="username"
[email protected]
---------1075d313df8d4e1d
Content-Disposition: form-data; name="password"
somepassword
---------1075d313df8d4e1d--
Для демонстрации моего кода в данный момент выглядит примерно так:
[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
}
Ответы
Ответ 1
Марк получил это. Самый простой способ использования режима требований совместимости ASP.NET - применить атрибут AspNetCompatibilityRequirementsMode для вашей операции. Затем у вас есть доступ к параметрам формы HttpContext
. Вот как вы это сделаете:
[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"];
}
Ответ 2
Не могли бы вы отправить сообщение на обычную страницу ASP.NET(возможно, ashx/handler или MVC) и просто использовать Request.Form
? Это поддерживает многочастную часть.