我写使用Asp.Net的Web API文件服务。 该服务检索从SQL Server文件(CSS时,Excel,CSV等)和响应GET请求提供他们。
我的第一个测试用例是CSS文件。 问题是,虽然我可以看到在服务器端,正确的数据当浏览器检索/解码,结果是错位。 这个问题似乎是相关的编码。
下面是在FireFox请求/响应标头:
当我点击萤火响应选项卡上,这里是什么样子:
结果看起来像被显示为UTF8 ASCII。 这是在Firebug的HTML视图:
上述例子是运行SSL Facebook应用程序内的iFrame。
如果我参加了网址,并直接在浏览器中打开它,它的工作原理和正确显示我的CSS:
总之,当我检索标签我的CSS文件,我的Facebook应用程序里面,我得到的垃圾(编码问题?)。 如果我从浏览器直接检索它,它的工作原理。
我CssFormatter MediaTypeFormatter代码:
public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, HttpContent content, TransportContext transportContext)
{
var taskSource = new TaskCompletionSource<object>();
try
{
var incomingFile = value as FileRestService.Entity.IFile;
var ms = new MemoryStream(incomingFile.DataBuffer);
ms.CopyTo(writeStream);
ms.Flush();
taskSource.SetResult(writeStream);
}
catch (Exception e)
{
taskSource.SetException(e);
}
return taskSource.Task;
}
我在创建响应流是否有误? 我注意到,响应头不指定编码。 这是一个问题?