The problem is very simple... From your C# code:
SHA256Managed sha256hasher = new SHA256Managed()
SHA-256 != SHA-1. Use the SHA1
class instead in C#, or use SHA-256 in Java as well. As you apparently can't change the C# code, you should change the Java instead:
MessageDigest md = MessageDigest.getInstance("SHA-256");
Once you've done that, the base64-encoded data should be the same in both platforms. Even though bytes are signed in Java, base64 encoders treat them as unsigned... they're only interested in the bits, basically.
I'd also strongly suggest that you represent your salt in ASCII in the source code, using \uxxxx
escaping for any non-ASCII characters. This will prevent problems due to compiling using the wrong encoding.