我一直在寻找这个线程:How to handle large file uploads via WCF?问题与WCF流
我需要有一个Web服务在我的供应商,我需要上传和下载文件到托管。我们正在谈论从1Mb到100Mb的视频,因此是流媒体方式。
我不能得到它的工作,我宣布一个接口:
[ServiceContract]
public interface IFileTransferService
{
[OperationContract]
void UploadFile(Stream stream);
}
所有的罚款,我实现它是这样的:
public string FileName = "test";
public void UploadFile(Stream stream)
{
try
{
FileStream outStream = File.Open(FileName, FileMode.Create, FileAccess.Write);
const int bufferLength = 4096;
byte[] buffer = new byte[bufferLength];
int count = 0;
while((count = stream.Read(buffer, 0, bufferLength)) > 0)
{
//progress
outStream.Write(buffer, 0, count);
}
outStream.Close();
stream.Close();
//saved
}
catch(Exception ex)
{
throw new Exception("error: "+ex.Message);
}
}
仍然没有问题,它发布到我的网络服务器在interweb上。到现在为止还挺好。
现在我对它做一个参考,并会将其一个FileStream,但现在的说法是一个byte [] - 这是为什么?我如何得到它流的正确方法?
编辑 我结合这个样子的:
<bindings>
<basicHttpBinding>
<binding name="StreamingFileTransferServicesBinding"
transferMode="StreamedRequest"
maxBufferSize="65536"
maxReceivedMessageSize="204003200" />
</basicHttpBinding>
</bindings>
我可以使用它没有问题,并没有错误 - 比我的输入参数等已经从流变为一个byte []
编辑2 解决了!当我在客户端提供参考时,我有点快。无意中,我做了一个“Web参考”,而不是“服务参考”。这解决了字节[] /流问题
你能不能做一个wsdl?如果是这样,你可以添加到你的描述。我相信这可能是您绑定中的配置问题。 – 2010-03-17 20:27:03
我认为,当我可以通过浏览器浏览并浏览它时,我可以生成wsdl? – 2010-03-17 20:30:44
你如何“参考它”?它是一个ServiceReference吗? – 2010-03-17 20:56:48