我用下面这些代码发送文件到一个web服务的SOAP方法:上传文件到web服务URL
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://DomainName.com/WebService.asmx?op=SaveVideoHere");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
byte[] fileData = null;
using (var binaryReader = new BinaryReader(Request.Files[0].InputStream))
{
fileData = binaryReader.ReadBytes(Request.Files[0].ContentLength);
}
request.ContentLength = fileData.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(fileData, 0, fileData.Length);
WebResponse response = request.GetResponse();
Stream stream = response.GetResponseStream();
StreamReader reader = new StreamReader(stream);
var result = reader.ReadToEnd();
stream.Dispose();
reader.Dispose();
在web服务:
[WebMethod]
public void SaveVideoHere()
{
if (HttpContext.Current.Request.Files[0] != null)
{
this.Context.Response.ContentType = "application/json; charset=utf-8";
this.Context.Response.Write(HttpContext.Current.Request.Files[0].FileName);
return;
}
}
但文件没有发送和有此错误
Additional information: The remote server returned an error: (500) Internal Server Error.
我必须做什么?
状态码500意味着您的webservice方法有问题。交叉检查你的webservice代码 – Ritz
这就是我的意思。您调用的webservice方法有一些逻辑问题,无法完成传入请求的执行。所以如果你是http://DomainName.com/WebService.asmx的作者,那么验证它是否正常工作 – Ritz
@ Ritz,谢谢你,通过你的指导解决了它。在我的webservice方法中'if(HttpContext.Current.Request.Files [0]!= null)'是错误的,并且必须使用if(HttpContext.Current.Request.Files.Count!= 0)'替换它。 – parsa