06 April 2010
WCF WTF: Update
I attempted the solution I discovered yesterday when I got into work this morning, and it wasn't working either. I did a little more research and discovered that, for WCF to work with Streams, you really need to pass them via a BasicHttpBinding. As I'm not that great at WCF yet, I've been using the default WSHttpBinding that Visual Studio creates when you add a Service Reference.
I didn't really want to spend too much more time working on this- we were already getting to the point of "diminishing returns." So I decided to take stock of where I was and move forward. The OperationContract was defined as a Stream output with a Stream input. However, since I know that a Stream is really just an Array of Bytes, I decided on an alternative approach.
I created a new OperationContract (called DecryptBytes) which accepts (and returns) an array of bytes.
Then, in my .svc.cs file, I created the new method which really just changes the bytes into a MemoryStream, and then hands the memory stream to my original method:
public byte[] DecryptBytes(byte[] inStream)
{
MemoryStream _iBytes = new MemoryStream(inStream);
MemoryStream _oBytes = this.Decrypt((Stream)_iBytes) as MemoryStream;
return _oBytes.ToArray();
}
So, for 5 lines of code (including the Attribute Tag in the Service Contract, and the Method declarations) I was able to correct the issue.
I feel a little silly that it was that hard to figure out, but I'll chalk it up as "lesson learned" and archive it here in case I need it again...
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment