无法访问连接到WebAPI的已处置对象应用程序

时间:2018-08-09 16:40:47

标签: c# asp.net xamarin

我有正在创建的视频和对象的内容,并且已传递到http客户端网络api。每当我将图像传递给客户端时,它都可以找到post方法,但是当涉及到视频时,客户端就无法发布视频。我检查了视频大小的长度,以确保它符合内容长度,并且在特定范围内。我收到的错误是该对象已被处置。如果您查看代码,则永远不会丢弃该对象。 这是应用程序上的代码

public async Task<bool> AddToQueueAsync(Incident i, ContentPage page, MediaFile file)
{
    HttpResponseMessage result = null;
    Uri webserviceURL = i.IncidentType == IncidentType.Trooper ? trooperURL : gspURL;
    var fileStream = File.Open(file.Path, FileMode.Open);

    try
    {
        using (var client = new HttpClient())
        {
             using (fileStream)
             {
                 using (var stream = new StreamContent(fileStream))
                 {
                     using (var content = new MultipartFormDataContent("----MyBoundary"))
                     {
                         if(i.MediaType == "Video")
                         {
                             content.Add(stream,"file", Guid.NewGuid().ToString() + ".mp4");
                         }
                         else
                         {
                             content.Add(stream, "file", Guid.NewGuid().ToString() + ".png");
                         }
                         content.Add(new StringContent(JsonConvert.SerializeObject(i)), "metadata");

                         result = await client.PostAsync(webserviceURL, content);
                     }
                 }
             }
         }

这是网络api上的代码:

    [HttpPost]
    public IHttpActionResult StarGSPDATA() {
        try {
            if(!Request.Content.IsMimeMultipartContent()) {
                Request.CreateResponse(HttpStatusCode.UnsupportedMediaType);
            }

            starGSPDATAinfo suspicousInfo;
            string homeDir = AppDomain.CurrentDomain.BaseDirectory;
            string dir = $"{homeDir}/uploads/";
            Directory.CreateDirectory(dir);

            var file = HttpContext.Current.Request.Files.Count > 0 ?
                HttpContext.Current.Request.Files[0] : null;

            if(HttpContext.Current.Request.Form.Count > 0) {
                suspicousInfo = MetaDataFromRequest(HttpContext.Current.Request.Form);
            } else {
                suspicousInfo = new starGSPDATAinfo();
            }

            if(file != null && file.ContentLength > 0) {
                var fileName = Path.GetFileName(file.FileName);
                var path = Path.Combine(dir, fileName);

                suspicousInfo.MediaFilePath = fileName;

                try {
                    file.SaveAs(path);
                } catch(Exception e) {
                    Console.WriteLine($"not saving: {e.ToString()}");
                }
            } else {
                throw new HttpResponseException(
                    new HttpResponseMessage(
                        HttpStatusCode.NoContent));
            }

            CleanData(suspicousInfo);

            db.starGSPDATAinfoes.Add(suspicousInfo);
            db.SaveChanges();

            return Created("http://localhost:50641/api/StarGSPDATA/", JsonConvert.SerializeObject(suspicousInfo));
        } catch(Exception e) {
            return InternalServerError(e);
        }
    }

它适用于图像,但不适用于视频,请帮助谢谢!

Here is a picture of the error

0 个答案:

没有答案