如何在C# Azure Function中设置响应ContentType以渲染HTML?
在C# Azure Function中设置HTML响应的ContentType头
不需要额外安装NuGet包,根据你的Azure Function托管模型(进程内/隔离),用原生API就能实现:
进程内托管模型(.NET Framework/.NET Core 3.1/.NET 5+)
有两种简单方式:
方式1:返回ContentResult
直接创建ContentResult实例并指定ContentType:
using Microsoft.AspNetCore.Mvc; using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; public static class HtmlResponseFunction { [FunctionName("GetHtmlPage")] public static IActionResult Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req) { var htmlContent = @" <html> <head> <title>Azure Function HTML Page</title> </head> <body> <h1>这是来自Azure Function的HTML内容</h1> <p>现在浏览器会正确渲染HTML了</p> </body> </html>"; return new ContentResult { Content = htmlContent, ContentType = "text/html", StatusCode = 200 }; } }
方式2:直接操作HttpResponse
通过注入的HttpResponse对象设置ContentType并写入内容:
using Microsoft.Azure.WebJobs; using Microsoft.Azure.WebJobs.Extensions.Http; using Microsoft.AspNetCore.Http; using System.Threading.Tasks; public static class HtmlResponseFunction { [FunctionName("GetHtmlPage")] public static async Task Run( [HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req, HttpResponse res) { res.ContentType = "text/html"; var htmlContent = @"<html><body><h1>Hello from Azure Function!</h1></body></html>"; await res.WriteAsync(htmlContent); } }
隔离托管模型(.NET 6+ Isolated Worker)
使用HttpResponseData对象设置响应头:
using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Http; using System.Net; public class HtmlResponseFunction { [Function("GetHtmlPage")] public HttpResponseData Run([HttpTrigger(AuthorizationLevel.Anonymous, "get")] HttpRequestData req) { var response = req.CreateResponse(HttpStatusCode.OK); response.Headers.Add("Content-Type", "text/html; charset=utf-8"); var htmlContent = @" <html> <head> <title>Isolated Function HTML Page</title> </head> <body> <h1>隔离模型下的HTML响应</h1> </body> </html>"; response.WriteString(htmlContent); return response; } }
以上所有方案都依赖Azure Function SDK自带的类型,无需额外安装NuGet包,设置Content-Type为text/html后,浏览器就会正确渲染HTML内容而非纯文本。
内容的提问来源于stack exchange,提问作者blackboxlogic
相关产品推荐
相关产品推荐

