C# 使用RestSharp将文件上载到Web服务
我正在尝试创建一个Web服务,它将接受多个文件的上载。要将此数据发布到Web服务,我使用RestSharp 为了这篇文章的目的,我已经把代码剥了回去 我有我的服务的接口:C# 使用RestSharp将文件上载到Web服务,c#,web-services,wcf,webservice-client,restsharp,C#,Web Services,Wcf,Webservice Client,Restsharp,我正在尝试创建一个Web服务,它将接受多个文件的上载。要将此数据发布到Web服务,我使用RestSharp 为了这篇文章的目的,我已经把代码剥了回去 我有我的服务的接口: [ServiceContract] public interface ISender { [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = Web
[ServiceContract]
public interface ISender
{
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
int Upload(Stream fileStream);
}
接口的实现:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Sender : ISender
{
public int Upload(Stream fileStream)
{
FileStream fileToupload = new FileStream(Path.Combine("D:\\FileUpload\\","test.png"), FileMode.Create);
byte[] bytearray = new byte[10000];
int bytesRead, totalBytesRead = 0;
do
{
bytesRead = fileStream.Read(bytearray, 0, bytearray.Length);
totalBytesRead += bytesRead;
} while (bytesRead > 0);
fileToupload.Write(bytearray, 0, bytearray.Length);
fileToupload.Close();
fileToupload.Dispose();
return 1;
}
}
然后使用RestSharp调用服务的客户端代码:
var client = new RestClient("http://myserviceurl/emailsender/Sender.svc");
var request = new RestRequest("Upload", Method.POST) {RequestFormat = DataFormat.Json};
request.AddHeader("Content-Type", "application/octet-stream");
byte[] bytes = File.ReadAllBytes(Server.MapPath("/img/carousel-sprite-160.png"));
request.AddFile("fileStream", bytes, "carousel-sprite-160.png", "image/png");
// execute the request
var response = client.Execute(request);
请允许我提出两个问题:
1) Upload方法中的fileStream参数始终为null-为什么?我配置的哪些内容不正确?。其次,如果.AddFile方法正在创建一个流对象,为什么要添加文件名和mime类型,这两个都不是流的一部分(可能是FileStream)
2) 可以对同一请求对象多次调用.AddFile方法。这表明webservice可以接收多个文件,但是webservice如何接收多个文件呢?无法使用列表
,因此我不明白这是怎么可能的
任何人能提供的任何建议都将不胜感激
提前感谢您抽出时间
问候,,
dotdev能否提供web.config
的
元素?