将Image作为byte []发送为Web服务方法参数

时间:2014-04-16 17:21:09

标签: c# asp.net web-services system.net.webexception

我遇到一个问题,当我发送一个小字节数组

byte[] s = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

然后它将成功接收并插入数据库但是当涉及转换为bytes []的图像的字节数组时,我将显示异常

“请求失败,HTTP状态为404:未找到。”

它没有显示“最大限制超过”或类似的东西。我该怎么办? 这是屏幕截图

enter image description here

它发送被注释的字节数组,但参数中的数组是位图转换为字节数组。

- 已编辑

以下是Web服务中接收端的代码

 [WebMethod]
 public bool TakeScreenShotResponseBack(string ip, byte[] screenShot)
    {
        dbOpts = new DatabaseOperation();

        if (dbOpts.InsertBitmapResponse(ip, screenShot))
            return true;
        else
            return false;
    }

这是发送方代码

    public bool ScreenShotResponse(string ip, byte[] ss)
    {
        response = new MyService.MasterWebService();
        try
        {
            //byte[] s = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            if (response.TakeScreenShotResponseBack(ip, ss))
                return true;
            else
                return false;
        }
        catch
        {
            return false;
        }
    }

2 个答案:

答案 0 :(得分:0)

我自己遇到了这个问题,似乎原因是非base64编码的图像可能包含终止发布请求等的字节,因此请求将无效。

另一个原因可能是您的webprovider。我尝试过的一个免费的徒劳无效,但是当我搬到另一个主持人而没有改变一行时,一切都运转良好。

我建议你使用RestSharp:

RestRequest request = new RestRequest("url", Method.POST);
request.AddParameter("image",  Convert.ToBase64String(imagestream.ToArray());
RestClient client = new RestClient();
client.ExecuteAsync(request, (response) =>
{
    //Do something with the response
}

答案 1 :(得分:-1)

尝试使用以下方式转换图片:

  public byte[] FileToByteArray(string fileName)
  {

       byte[] buff = null;

       if (fileName != null && fileName != "" && File.Exists(fileName))

       {

          buff = File.ReadAllBytes(fileName);

       }
        return buff;
    }

在我的数据库中,图片的列是type image.I有同样的问题,我用它修复了它。