You should decide for one way or the other, either use FileBytes or open the Stream using the FileContent property. I assume that FileBytes also reads the content of the Stream, so the StreamReader will start reading at the end - hence the empty output.
If you only want to check the size, you can do this using the PostedFile.ContentLength property:
if(fileUpload.HasFile)
{
var sizeLimit = 1024 * 1024; // Limit to a megabyte
if (fileUpload.PostedFile.ContentLength > sizeLimit)
lblError.Tet = "File is too large";
else
{
using(StreamReader sr = new StreamReader(fileUpload.FileContent))
{
String fileContent = sr.ReadToEnd();
String fileName = Path.GetFileName(fileUpload.FileName);
this.lblMessage.Text = (fileContent);
}
}
}