得到了一个.NET/C#问题......
我需要解析一些"multipart/form-data"格式的输入发布数据,以提取传递的用户名和密码.任何人都知道如何在不编写自己的解析代码的情况下执行此操作
请注意输入的帖子数据如下所示:
---------1075d313df8d4e1d
Content-Disposition: form-data; name="username"
x@y.com
---------1075d313df8d4e1d
Content-Disposition: form-data; name="password"
somepassword
---------1075d313df8d4e1d--
Run Code Online (Sandbox Code Playgroud)
为了展示我的代码,目前看起来像这样:
[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
}
Run Code Online (Sandbox Code Playgroud)
马克得到了它.使用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"];
}
Run Code Online (Sandbox Code Playgroud)