Sharpdx DirectX11 MapSubresource is failing trying to map a staging texture

I'm trying to render to a texture and then pull the image data out. I've created one texture as a render target and another as a staging texture. After rendering to the render target, I use CopyResource to copy from the render target texture to the staging texture. So far, so good. However, when I use DeviceContext.MapSubresource to get the data from the staging texture, I get E_INVALIDARGS exception, and I can't figure out why.

Here is how I create the staging texture:

        textureDesc = new Texture2DDescription()
{
ArraySize = 1,
BindFlags = BindFlags.None,
Format = Format.B8G8R8A8_UNorm,
Height = 256,
MipLevels = 1,
SampleDescription = new SampleDescription(1, 0),
Usage = ResourceUsage.Staging,
Width = 256
};
_renderStaging = new Texture2D(_dev, textureDesc);


Here is how I populate the staging texture and then try to map it:

            DataStream stream;
_con.CopyResource(_renderTarget, _renderStaging);
// The following is the line that fails
box = _con.MapSubresource(_renderStaging, 0, MapMode.Read, MapFlags.None, out stream);


I have the same code working in C++, so I know I have the general idea right. This is the working C++ code:

textureDesc.Width = 256;
textureDesc.Height = 256;
textureDesc.MipLevels = 1;
textureDesc.ArraySize = 1;
textureDesc.Format = DXGI_FORMAT_B8G8R8A8_UNORM;
textureDesc.SampleDesc.Count = 1;
textureDesc.MiscFlags = 0;
textureDesc.Usage = D3D11_USAGE_STAGING;
textureDesc.BindFlags = 0;
hr = dev->CreateTexture2D(&textureDesc, NULL, &renderStagingTexture);

devcon->CopyResource(renderStagingTexture, renderTargetTextureMap);
D3D11_MAPPED_SUBRESOURCE mappedResource;


The error was due to _con being the deferred context while in the equivalent C++ code I was using the immediate context. When I switched the SharpDX code to use immediate context, it worked just as expected.

Unfortunately, the problem was not illustrated by the code I posted.