C# 部署后,通过API上载的文件不起作用
我已经创建并测试了一个文件api。我的问题是,使用者在我的本地计算机上工作,但在部署后不工作。错误:无法访问已关闭的流C# 部署后,通过API上载的文件不起作用,c#,file,deployment,client,consumer,C#,File,Deployment,Client,Consumer,我已经创建并测试了一个文件api。我的问题是,使用者在我的本地计算机上工作,但在部署后不工作。错误:无法访问已关闭的流 [HttpPost] public async System.Threading.Tasks.Task<ActionResult> InsertFile(HttpPostedFileBase file) { HttpClientHandler hndlr = new HttpClientHandler(); hndlr
[HttpPost]
public async System.Threading.Tasks.Task<ActionResult> InsertFile(HttpPostedFileBase file)
{
HttpClientHandler hndlr = new HttpClientHandler();
hndlr.UseDefaultCredentials = true;
using (var client = new HttpClient(hndlr))
{
var content = new MultipartFormDataContent();
MemoryStream target = new MemoryStream();
file.InputStream.CopyTo(target);
byte[] data = target.ToArray();
file.InputStream.Read(data, 0, data.Length);
var fileContent = new ByteArrayContent(data);
fileContent.Headers.ContentDisposition = new System.Net.Http.Headers.ContentDispositionHeaderValue("attachment") { FileName = file.FileName };
content.Add(fileContent);
var requestUri = "http://ServerName/FilesAPI/api/Values";
var result = await client.PostAsync(requestUri, content);
if (result.StatusCode == System.Net.HttpStatusCode.Created)
{
List<string> m = await result.Content.ReadAsAsync<List<string>>();
if (m.FirstOrDefault() == "-3")
{
return RedirectToAction("InsertWD", "Home", new { fileID = id });
}
}
}
return View();
}
[HttpPost]
public async System.Threading.Tasks.Task InsertFile(HttpPostedFileBase文件)
{
HttpClientHandler hndlr=新的HttpClientHandler();
hndlr.UseDefaultCredentials=true;
使用(var客户端=新的HttpClient(hndlr))
{
var content=新的MultipartFormDataContent();
MemoryStream target=新的MemoryStream();
file.InputStream.CopyTo(目标);
字节[]数据=target.ToArray();
file.InputStream.Read(data,0,data.Length);
var fileContent=newbytearraycontent(数据);
fileContent.Headers.ContentDisposition=new System.Net.Http.Headers.ContentDispositionHeaderValue(“附件”){FileName=file.FileName};
content.Add(fileContent);
var requestUri=”http://ServerName/FilesAPI/api/Values";
var result=wait client.PostAsync(requestUri,content);
if(result.StatusCode==System.Net.HttpStatusCode.Created)
{
List m=wait result.Content.ReadAsAsync();
如果(m.FirstOrDefault()=“-3”)
{
返回RedirectToAction(“InsertWD”,“Home”,new{fileID=id});
}
}
}
返回视图();
}
您需要找出没有获得任何数据的原因。您可能会遇到异常,并且流正在关闭。逐步完成代码并找出哪一行失败。@jdweng感谢您的回答。我已经在我的本地机器上测试过了,它工作得很好。问题发生在将项目部署到服务器后。此代码失败的原因很多。我不想开始猜测。默认http头可能错误,您可能无法访问该文件。我不知道。使用像wireshark或fiddler这样的嗅探器可以提供更多信息。您可以将工作的本地计算机上的嗅探器结果与服务器上的结果进行比较。您需要找出未获取任何数据的原因。您可能会遇到异常,并且流正在关闭。逐步完成代码并找出哪一行失败。@jdweng感谢您的回答。我已经在我的本地机器上测试过了,它工作得很好。问题发生在将项目部署到服务器后。此代码失败的原因很多。我不想开始猜测。默认http头可能错误,您可能无法访问该文件。我不知道。使用像wireshark或fiddler这样的嗅探器可以提供更多信息。您可以将工作的本地计算机上的嗅探器结果与服务器上的结果进行比较。