GVKun编程网logo

.net core api 和 razor 页面一起(net core web api)

3

在本文中,我们将带你了解.netcoreapi和razor页面一起在这篇文章中,我们将为您详细介绍.netcoreapi和razor页面一起的方方面面,并解答netcorewebapi常见的疑惑,同时

在本文中,我们将带你了解.net core api 和 razor 页面一起在这篇文章中,我们将为您详细介绍.net core api 和 razor 页面一起的方方面面,并解答net core web api常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的ASP .Net Core / Razor页面:在工作时保持会话活动、ASP.NET Core 2.0中Razor页面禁用防伪令牌验证、ASP.NET Core 2加入了Razor页面特性、asp.net core 5 razor 页面中的多语言站点为注册页面生成错误

本文目录一览:

.net core api 和 razor 页面一起(net core web api)

.net core api 和 razor 页面一起(net core web api)

如何解决.net core api 和 razor 页面一起?

我的项目是 .net core 5 及其 api 项目。 这是来自 VS 内项目属性的应用信息。

Application:
Target Framework: 5.0
Startup object: Not set
Output type: Console application

除了使用控制器访问端点之外,我还尝试使用剃刀页面引入端点。

Startup.cs

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();
    services.AddRazorPages(); //added
}

public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{   
    app.UseEndpoints(endpoints =>
    {                
        endpoints.MapControllers();
        endpoints.MapRazorPages(); //added
     });
}

我手动添加文件夹 PagesControllers 处于同一级别 在 Pages 文件夹中,我添加了 MyPage.cshtml,它是文件 MyPage.cshtml.cs 背后的代码。我不会详细介绍这些文件(内容是正确的,并且它正在处理不同的 Web 应用程序项目,只是 razor,而不是 api 项目)。

但是,每当我点击 http://localhost/MyPage?carId=abcd 我 收到错误 404 NotFound。

public class MyPageModel: PageModel
{
    public void OnGet(string carId)
    {
       ...
    }   
    public string GetDescription()
    {
       return "Some description";
    }
    ...
}

MyPage.cshtml
@page
@model MyPageModel
@{
   Layout = "";
   ViewData["Title"] = @Model.GetDescription();
 }

我想我的问题是(除了显而易见的 404 错误原因):是否可以将 razor 页面和 api 文件放在一起?如果是这样,我是否需要在 Startup.cs 配置中设置其他内容才能使用剃刀页面?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

ASP .Net Core / Razor页面:在工作时保持会话活动

ASP .Net Core / Razor页面:在工作时保持会话活动

答案是,你不应该。我认为这将带来安全风险。

最好让用户经常保存其更改,从而使会话保持活动状态。

ASP.NET Core 2.0中Razor页面禁用防伪令牌验证

ASP.NET Core 2.0中Razor页面禁用防伪令牌验证

在这篇短文中,我将向您介绍如何ASP.NET Core Razor页面中禁用防伪令牌验证。

Razor页面是ASP.NET Core 2.0中增加的一个页面控制器框架,用于构建动态的、数据驱动的网站;支持跨平台开发,可以部署到Windows,Unix和Mac操作系统。

跨站点请求伪造(也称为XSRF或CSRF)是对Web托管应用程序的攻击,因为恶意网站可能会影响客户端浏览器和浏览器信任网站之间的交互。这种攻击是完全有可能的,因为Web浏览器会自动在每一个请求中发送某些身份验证令牌到请求网站。这种攻击形式也被称为 一键式攻击 或 会话控制,因为攻击利用了用户以前认证的会话。关于这个话题可以看我的另一篇博客:ASP.NET Core 防止跨站请求伪造(XSRF/CSRF)攻击。

Razor页面被设计为默认启动防跨站请求伪造攻击的,防伪令牌生成和验证被自动包含在Razor页面中。但是,在某些情况下,您可能想禁用它。

全局禁用

要在Razor页面中全局禁用防伪令牌验证,可以在Startup类的ConfigureServices方法中禁用:

public void ConfigureServices(IServiceCollection services)
 {
  services.AddMvc().AddRazorPagesOptions(o=>
  {
   o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
  });
 }

这将关闭整个应用程序的防伪令牌验证。请注意,禁用防伪令牌验证不会阻止生成隐藏字段或cookie。它只是跳过验证过程。

我们知道防伪令牌是通过FormTagHelper生成的,好在ASP.NET Core MVC提供了全局设置标签助手的方法:

public void ConfigureServices(IServiceCollection services)
 {
  services.AddMvc().InitializeTagHelper<FormTagHelper>((helper, context) => helper.Antiforgery = false);
 }

所以全局禁用防伪令牌验证的完整代码如下:

public void ConfigureServices(IServiceCollection services)
 {
  services.AddMvc().AddRazorPagesOptions(o=>
  {
   o.Conventions.ConfigureFilter(new IgnoreAntiforgeryTokenAttribute());
   
  }).InitializeTagHelper<FormTagHelper>((helper, context) => helper.Antiforgery = false);
 }

部分禁用

如果您希望仅禁用特定方法或页面模型的验证,包括如下两个方法:

1、在Startup类的ConfigureServices方法进行配置,不过要提供页面的路径:

public void ConfigureServices(IServiceCollection services)
  {
   services.AddMvc().AddRazorPagesOptions(opotions =>
   {
    opotions.Conventions.AddPageApplicationModelConvention("/demo",
     pageApplicationModel => pageApplicationModel.Filters.Add(new IgnoreAntiforgeryTokenAttribute()));
   });
  }

在此处,我们禁用了 demo 页面的防伪令牌验证。

2、在PageModel上面使用标记:

[IgnoreAntiforgeryToken(Order = 1001)]
 public class DemoModel : PageModel
 {
  public void OnPost()
  {

  }
 }

ValidateAntiForgeryToken标记默认的Order属性为1000,因此IgnoreAntiforgeryToken属性需要一个更高的序号。

上面我们已经说过了禁用防伪令牌验证不会阻止生成隐藏字段或cookie,所以需要禁用FormTagHelper生成令牌。

<form method="post" asp-antiforgery="false">
</form>

关于这个话题就介绍完了,如果您感兴趣,不防测试一下。

您可能感兴趣的文章:
  • ASP.NET Core中的Razor页面实现路由功能
  • ASP.NET Core中Razor页面与MVC区别介绍
  • ASP.NET Core中Razor页面的Handlers处理方法详解
  • ASP.NET Core Razor页面用法介绍
  • ASP.NET Core中的Razor页面介绍
  • asp.net core razor自定义taghelper的方法
  • 如何ASP.NET Core Razor中处理Ajax请求
  • ASP.NET Core Razor 页面路由详解
  • ASP.NET Core中的Razor页面使用视图组件

ASP.NET Core 2加入了Razor页面特性

ASP.NET Core 2加入了Razor页面特性

最近发布的ASP.NET Core 2.0,连同新发布的.NET Core 2和Entity Framework Core 2.0y,一并构成了.NET Core 2.0生态中的三元组。此发布给出了多个新特性和改进,其中包括通用性能的改进、Razor页面、新的开发模板以及更好的Azure Diagnostics支持。

让我们首先看一下Razor页面。Razor页面类似于标准的MVC视图,只是通过使用@Page指令标明自身为Razor页面。Microsoft现在考虑将Razor页面作为ASP.NET Core中构建Web应用UI的推荐方法,当然开发人员也可自由地选择最适合自己的方法。使用Razor页面编写的Web页面,无需经过控制器即可直接处理请求,正如在标准的ASP.NET MVC应用中那样。

转向ASP.NET Core 2平台的另一个好处是简化了对软件包的引用。在项目的.csproj文件中,仅需引用Microsoft.AspNetCore.All。这是一个Meta-package,它在简化了引用问题的同时,确保应用所需的所有库是可用的。而在发布Web应用时,只有应用所需的库才会与应用一并发布,避免了文件膨胀。另一个优点是Meta-package可使应用的启动速度更快,这是因为它使用了.NET Core Runtime Store,其中预编译了所有的软件包和文件。虽然这一Meta-package提供了一种便利的软件包引用方式,但是开发人员依然可以继续在Microsoft.AspNetCore.*中直接引用特定的软件包。

为了支持新的特性,ASP.NET Core 2扩充一些模板,它们来自于Razore页面(模板命名为“Web Application”)、Web API、基于MVC的Web应用、Angular、React.js和React.js& Redux等。所有这些模板也可以通过命令行使用,不必依赖于Visual Studio 2017。

在明确声明的情况下,Razor语言引擎提供对C# 7.1特性的支持。为此,需在项目文件中需添加该如下属性:latest。更改将在重新加载解决方案后生效。

规划将应用部署到Azure的开发人员将会看到,ASP.NET Core 2构建的应用不需作任何更改,就可使用Azure App Service。应用的部署可以在VS2017中执行,也可直接在Azure门户上执行。

使用已有ASP.NET Core 1.X软件包的开发人员,要详细了解如何升级应用到ASP.NET Core 2.0,可以参考Microsoft的升级指南。使用ASP.NET 2.0需下载.NET Core 2 SDK,它是独立于visual studio 2017提供的。

asp.net core 5 razor 页面中的多语言站点为注册页面生成错误

asp.net core 5 razor 页面中的多语言站点为注册页面生成错误

如何解决asp.net core 5 razor 页面中的多语言站点为注册页面生成错误?

我是 asp.net core Razor 页面的新手,今天我想测试多语言站点结构。根据我的经验,我想为网站的英语和阿拉伯语版本提供单独的文件,因为两者的设计在某些页面上有所不同,因此它是我的最佳选择,而不是在本地化等帮助下使用英语和阿拉伯语的单页。>

我现在不确定是使用两种语言的通用标识页面还是单独的页面,因为我对 asp.net 核心很陌生。

我的文件夹结构测试站点如下

enter image description here

英语和阿拉伯语的一般测试页面可基于上述结构和小tweeks访问

English
https://localhost:44322/en/
https://localhost:44322/en/Privacy

arabic
https://localhost:44322/ar/
https://localhost:44322/en/Privacy

英文页面

enter image description here

阿拉伯语页面

enter image description here


我在注册页面 https://localhost:44322/Identity/Account/Register 上遇到问题,因为它在我点击注册链接时产生错误

我在 _ViewStart.cshtml 下的 Area/Identity/Account/Register 页面中更改了路径

@{
    Layout = "/Pages/en/Shared/_Layout.cshtml";
}

路径更改为

  • Layout = "/Pages/Shared/_Layout.cshtml";
  • Layout = "/Pages/en/Shared/_Layout.cshtml";
  • Layout = "../Pages/en/Shared/_Layout.cshtml";
  • Layout = "Pages/en/Shared/_Layout.cshtml";

对于文件中提到的所有上述路径,它仍然会产生错误。我不确定我应该如何提及此场景的路径以使此页面至少可以工作。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

关于.net core api 和 razor 页面一起net core web api的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于ASP .Net Core / Razor页面:在工作时保持会话活动、ASP.NET Core 2.0中Razor页面禁用防伪令牌验证、ASP.NET Core 2加入了Razor页面特性、asp.net core 5 razor 页面中的多语言站点为注册页面生成错误等相关知识的信息别忘了在本站进行查找喔。

本文标签: