尝试使用:
// note the case
Response.Headers.Add("Content-Type", "application/json; charset=utf-8");
甚至更好:
Response.ContentType = "application/json; charset=utf-8";
对于您似乎在做的事情,我建议您使用IHttpHandler
而不是 aspx 页面。您甚至可以将其配置为具有 json 扩展名(尽管扩展名不应该那么重要)。这是一个例子:
public class CustomHttpHandler : IHttpHandler
{
// return true to reuse (cache server-side) the result
// for the same request parameters or false, otherwise
public bool IsReusable { get { return true; } }
public void ProcessRequest(HttpContext context)
{
var response = context.Response;
// do with the response what you must
}
并在 web config 中配置它:
<configuration>
</system.web>
<httpHandlers>
<remove verb="*" path="*.asmx" />
<add verb="*"
path="*.asmx"
validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions" />
<add verb="*"
path="*_AppService.axd"
validate="false"
type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions" />
<add verb="GET,HEAD"
path="ScriptResource.axd"
type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions" validate="false" />
<!-- your handler here: -->
<add verb="GET"
path="CustomHttpHandler.json"
type="YourApp.CustomHttpHandler, YourApp" />
</httpHandlers>
</system.web>
</configuration>
您可以使用动词来使 GET/POST 或其他请求类型可以访问句柄,"*"
供所有人使用。处理程序可作为“~/CustomHttpHandler.json”访问 - 请注意添加的 json 扩展名(原始文件为 .ashx)。不过,您仍然必须将内容类型标头放入响应中。