Asp.net core 我可以为Blazor服务器页面设置mime类型吗?
在传统ASP.NET中,我可以执行以下操作: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页面生成动
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页面中。