我用下面這些代碼發送文件到一個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