Asp.net core 我可以为Blazor服务器页面设置mime类型吗?

Asp.net core 我可以为Blazor服务器页面设置mime类型吗?,asp.net-core,blazor-server-side,Asp.net Core,Blazor Server Side,在传统ASP.NET中,我可以执行以下操作: Response.Clear(); Response.ContentType=“text/plain”; Write(“{'some':'json'}”); Response.End(); 我可以在Blazor服务器页面中执行类似的操作吗?我只想转到某个路由并返回一个字符串,而不是html 或者我最好看看在ASP.NET Core 3中创建web API有哪些选项?Aha!我找到了斯科特·汉斯曼的一本书。它向您展示了如何使用.cshtml页面生成动

在传统ASP.NET中,我可以执行以下操作:

Response.Clear();
Response.ContentType=“text/plain”;
Write(“{'some':'json'}”);
Response.End();

我可以在Blazor服务器页面中执行类似的操作吗?我只想转到某个路由并返回一个字符串,而不是html

或者我最好看看在ASP.NET Core 3中创建web API有哪些选项?

Aha!我找到了斯科特·汉斯曼的一本书。它向您展示了如何使用
.cshtml
页面生成动态
robots.txt
文件

以下是作为
.cshtml
文件重新编写的上述代码:

@page”/file.txt
@{
布局=空;
this.Response.ContentType=“text/plain”;
var bytes=System.Text.Encoding.ASCII.GetBytes(“{'some':'json'}”);
等待这个.Response.Body.WriteAsync(字节);
}

我假设你不能用
.razor
页面来实现这一点-因为组件将由
\u Host.cshtml
文件呈现…

你可以在Startup.cs中使用FileExtensionContentTypeProvider的通用方法

...
using Microsoft.AspNetCore.StaticFiles;
…
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
          ...
            app.UseHttpsRedirection();
            var provider = new FileExtensionContentTypeProvider();
            provider.Mappings.Add(".dae", "text/xml");
            app.UseStaticFiles(new StaticFileOptions
            {
                ContentTypeProvider = provider
            });
            app.UseStaticFiles();
  ...
        }
...

而且,是的,您必须调用另一个“空”app.UseStaticFiles();在由于已知错误进行配置后

“只想转到某个路线”:IMO,最好插入导航
NavigationManager
服务并调用
navManager.NavigateTo(url)
,而不是更改响应。因为大多数时候Blazor在建立连接后通过信号器(Websocket)进行通信,在这个阶段,根本没有HTTP响应。我想给我们的GIS前端提供一个url,类似于
https://example.com/gis/layer1.geojson
。所以我需要http响应内容类型为“text/plain”,如果我理解正确,url“”不是Blazor页面,而是返回“text/plain”的普通端点?是的。现在我意识到,我要问的是——用ASP.NET Core/Blazor服务器应用程序生成
文本/普通
文档的最简单方法是什么?这取决于场景,您可以将其放在中间件、控制器或Razor页面中。