我一直在尋找這個線程: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