ZetCode

ASP.NET 纯文本

最后修改于 2023 年 10 月 18 日

在本文中,我们将展示如何在 ASP.NET 应用程序中提供纯文本。

ASP.NET 是一个跨平台、高性能、开源的框架,用于构建现代、支持云的 Web 应用程序。它由 Microsoft 开发。

内容类型

内容类型,也称为媒体类型,是与文件一起发送的字符串,用于指示文件类型。它描述了内容的格式;例如,HTML 文件可能被标记为 text/html,或图像文件被标记为 image/png)。它与 Windows 上的文件名扩展名具有相同的作用。

content-type 标头值用于指示资源的媒体类型。text/plain; charset=utf-8 用于文本文件。

ASP.NET 纯文本示例

返回纯文本的最简单方法是使用 lambda 表达式。

$ dotnet new web --no-https -o PlainTextEx

我们创建一个新的 ASP.NET Web 应用程序。

Program.cs
var builder = WebApplication.CreateBuilder(args);
var app = builder.Build();

app.MapGet("/", () => "home page\n");
app.MapGet("/about", () => Results.Content("about page\n"));
app.MapGet("/contact", () => "contact page\n");

app.Run("https://:3000");

我们有三个映射。这些映射使用 lambda 表达式。

app.MapGet("/", () => "home page\n");

在第一个映射中,我们发送一个字符串。ASP.NET 会自动设置状态码和内容类型。

app.MapGet("/about", () => Results.Content("about page\n"));

我们还可以使用 Results.Content 辅助方法来实现更明确的意图。

$ dotnet watch

我们启动应用程序。

$ curl localhost:3000 -i
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Date: Tue, 27 Sep 2022 10:28:43 GMT
Server: Kestrel
Transfer-Encoding: chunked

home page
$ curl localhost:3000/about -i
HTTP/1.1 200 OK
Content-Length: 11
Content-Type: text/plain; charset=utf-8
Date: Tue, 27 Sep 2022 10:25:54 GMT
Server: Kestrel

about page
$ curl localhost:3000/contact -i
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Date: Tue, 27 Sep 2022 10:29:00 GMT
Server: Kestrel
Transfer-Encoding: chunked

contact page

我们使用 curl 创建 GET 请求。

ASP.NET 纯文本示例 II

在第二个示例中,我们从控制器返回纯文本响应。

Program.cs
var builder = WebApplication.CreateBuilder(args);
builder.Services.AddControllers();

var app = builder.Build();

app.UseRouting();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

app.Run("https://:3000");

Program.cs 中,我们设置了控制器。

Controllers/Home/HomeController.cs
using Microsoft.AspNetCore.Mvc;

namespace PlainTextEx.Controllers;

public class HomeController : Controller
{
    [Produces("text/plain")]
    [HttpGet("/")]
    public IActionResult Home()
    {
        string msg = "home page\n";

        return Ok(msg);
    }

    [HttpGet("about")]
    public ContentResult About()
    {
        return Content("about page\n");
    }
}

我们有两个操作方法。

[Produces("text/plain")]
[HttpGet("/")]
public IActionResult Home()
{
    string msg = "home page\n";

    return Ok(msg);
}

使用 Produces 属性,我们设置了内容类型。我们将消息放入 Ok 方法中,该方法设置 OK 状态码。

[HttpGet("about")]
public ContentResult About()
{
    return Content("about page\n");
}

或者,我们也可以使用 ContentResultContent 来生成纯文本响应。

$ curl localhost:3000 -i
HTTP/1.1 200 OK
Content-Type: text/plain; charset=utf-8
Date: Tue, 27 Sep 2022 10:22:49 GMT
Server: Kestrel
Transfer-Encoding: chunked

home page

我们生成一个到主页的 GET 请求。

$ curl localhost:3000/about -i
HTTP/1.1 200 OK
Content-Length: 11
Content-Type: text/plain; charset=utf-8
Date: Tue, 27 Sep 2022 10:23:39 GMT
Server: Kestrel

about page

我们生成一个到关于页面的 GET 请求。

在本文中,我们展示了如何在 ASP.NET 应用程序中提供纯文本。

作者

我叫 Jan Bodnar,我是一名充满热情的程序员,拥有丰富的编程经验。我从 2007 年开始撰写编程文章。到目前为止,我已撰写了 1400 多篇文章和 8 本电子书。我在编程教学方面有十多年的经验。

列出所有 ASP.NET 教程