在.NET/C#中解析"multipart/form-data"

Oli*_*ain 7 .net html c#

得到了一个.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)

Mik*_*las 7

马克得到了它.使用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)