c#webrequest发布文件和表单数据

c#webrequest发布文件和表单数据,c#,asp.net,forms,wcf,webrequest,C#,Asp.net,Forms,Wcf,Webrequest,各位。我在发布带有表单数据和文件的WebRequest时遇到问题。 我有一个WCF服务,它有一个名为“SaveFileAndData”的方法。我无法更改“SaveFileAndData”方法体。此方法是在DoSomething click事件上从aspx页面调用的 现在我可以将表单数据发布到wcf服务方法,但无法发布包含表单数据的文件。我不知道如何发布包含表单数据的文件 在服务方法中,我们可以使用HttpContext.Current.Request.form[“id”]和文件HttpConte

各位。我在发布带有表单数据和文件的WebRequest时遇到问题。 我有一个WCF服务,它有一个名为“SaveFileAndData”的方法。我无法更改“SaveFileAndData”方法体。此方法是在DoSomething click事件上从aspx页面调用的

现在我可以将表单数据发布到wcf服务方法,但无法发布包含表单数据的文件。我不知道如何发布包含表单数据的文件

在服务方法中,我们可以使用HttpContext.Current.Request.form[“id”]和文件HttpContext.Current.Request.files[“image1”]

我最近三天一直在寻找这个问题的解决方案,但没有得到任何有用的解决方案

发布的文件应通过HttpContext.Current.Request.files[“image1”]获取。

这是我关于stackoverflow的第一个问题,我不知道如何发布这个问题

谢谢

OperationContract()]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Bare, Method = "POST", ResponseFormat = WebMessageFormat.Json, UriTemplate = "SaveFileAndData")]
void SaveFileAndData();


public void SaveFileAndData()
{
    string ext1 = "";
    string ext2 = "";
    string filename1 = "";
    string filename2 = "";

    long id = 0;
    if (HttpContext.Current.Request.Form["id"] != null && HttpContext.Current.Request.Form["id"].ToString().Trim() != "")
        id = Int64.Parse(HttpContext.Current.Request.Form["id"].Trim());

    int cid = 0;
    if (HttpContext.Current.Request.Form["cid"] != null && HttpContext.Current.Request.Form["cid"].ToString().Trim() != "")
        cid = Int32.Parse(HttpContext.Current.Request.Form["cid"].Trim());

    HttpContext context = HttpContext.Current;
    if (context != null)
    {
        if (context.Request.Files.Count >= 1)
        {
            HttpPostedFile file1 = HttpContext.Current.Request.Files["image1"];
            if (file1 != null)
            {
                ext1 = System.IO.Path.GetExtension(file1.FileName);
                filename1 = custregid + ext1;
                if (((ext1.ToLower() != ".jpg") & (ext1.ToLower() != ".jpeg") & (ext1.ToLower() != ".gif") & (ext1.ToLower() != ".png") & (ext1.ToLower() != ".bmp")))
                {
                    // Perform some operation
                }
            }

            HttpPostedFile file2 = HttpContext.Current.Request.Files["image2"];
            if (file2 != null)
            {
                ext2 = System.IO.Path.GetExtension(file2.FileName);
                filename2 = custregid + ext2;

                if (((ext2.ToLower() != ".jpg") & (ext2.ToLower() != ".jpeg") & (ext2.ToLower() != ".gif") & (ext2.ToLower() != ".png") & (ext2.ToLower() != ".bmp")))
                {
                    // Perform some operation
                }
            }
        }
    }
}



 protected void btnDoSomeThing_OnClick(object sender, EventArgs e)
{
    try
    {
        long id = 1;
        long cid = 1;
        string key = "key";
        WebRequest webrequest1 = WebRequest.Create("http://localhost:65010/API/Service.svc/SaveFileAndData");

        webrequest1.Method = "POST";
        webrequest1.Headers.Add("key", key);
        string postData = "";
        postData = "id=" + id + "&cid=" +cid;
        byte[] byteArray = Encoding.UTF8.GetBytes(postData);

        webrequest1.ContentType = "application/x-www-form-urlencoded";
        webrequest1.ContentLength = byteArray.Length;
        Stream dataStream = webrequest1.GetRequestStream();
        dataStream.Write(byteArray, 0, byteArray.Length);
        dataStream.Close();

        // Get the response.
        WebResponse webresponse = webrequest1.GetResponse();
        Stream strresponse = webresponse.GetResponseStream();
        StreamReader strreader = new StreamReader(strresponse);
        string responseFromServer = strreader.ReadToEnd();

        webresponse.Close();
        strresponse.Close();
        strreader.Close();

     }
    catch (Exception ex)
    {
        throw ex;
    }
}

请按照本文所述进行尝试:或者您正在使用哪个版本的.NET Framework?请按照本文所述进行尝试:或者您正在使用哪个版本的.NET Framework?