I have written a WCF streamed service for uploading large files. In the service Interface I am taking "stream" as the parameter. The service part of the code is compiling well. When I include this service(Adding Web reference) in the client the same parameter is becoming byte[] and is not taking the FileStream which is supposed to be given to the service which pulls the data from this FileStream. I checked the Reference.cs file on the client side and changed all instances of byte[] to Stream. The code compiles but when run gives exception. Please suggest me how to overcome this problem. Thanks in advance.
My Service Web.config looks like this...
closeTimeout="00:01:00"
openTimeout="00:01:00"
receiveTimeout="00:10:00"
sendTimeout="00:01:00"
transferMode="Streamed"
messageEncoding="Mtom"
maxBufferSize="65536"
maxReceivedMessageSize="67108864">
My Message contract is like this...
private Stream inPutField;
[MessageBodyMember(Order = 0)]
public Stream inPut
{
get { return inPutField; }
set { inPutField = value; }
}
My Service Contract is like this....
[OperationContract(IsTerminating = false, IsInitiating = true, IsOneWay = true, AsyncPattern = false, Action = "SCORMData")]
void SCORMData(Stream inPut);
Please suggest me what changes I need to do. My service Implementation is...
public void SCORMData(Stream inPut)
{
FileStream targetStream = null;
Stream sourceStream = inPut;
string uploadFolder = @"C:\S3File\temp\";
string filename = "testSCORMFile";
string filePath = Path.Combine(uploadFolder, filename);
using (targetStream = new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.None))
{
//read from the input stream in 4K chunks
//and save to output stream
const int bufferLen = 4096;
byte[] buffer = new byte[bufferLen];
int count = 0;
long bytesRead = 0;
while ((count = sourceStream.Read(buffer, 0, bufferLen)) > 0)
{
targetStream.Write(buffer, 0, count);
bytesRead += count;
}
targetStream.Close();
sourceStream.Close();
return;
}
}
Regards,
Excel
Replies
Know the answer? Post it — somebody with the same question will find it here.