webapi接收不到frombody实体类传入的数据

webapi接收不到frombody实体类传入的数据,第1张

webapi接收不到frombody实体类传入的数据如下。

就是POST请求的时候,来自实体的参数,content-type:application/x->>

如果不想使用Web API方式,可以将最后两行的代码删除,即删除以下两行代码:

servicesAddControllers();

servicesAddSwaggerGen(c =>

{

cSwaggerDoc("v1", new OpenApiInfo { Title = "MyToDoApi", Version = "v1" });

});

这两行代码的作用是添加控制器和Swagger文档生成器,如果不需要使用Web API,就不需要这些东西了。

另外,如果不使用Web API,可以将启动类中的以下代码删除:

servicesAddDbContext<MyToDoContext>(option =>

{

var connectionString = ConfigurationGetConnectionString("ToDoConnection");

optionUseSqlite(connectionString);

})AddUnitOfWork<MyToDoContext>()

AddCustomRepository<ToDo, ToDoRepository>();

因为这些代码都是用来配置数据库上下文和依赖注入的,如果不使用Web API,就不需要这些东西了。

首先,让我们先更新 API 项目

我们将先对 API 项目进行必要的修改,修改完成之后再切换到 Web 项目对客户端进行更新。

第1步:我们需要一个数据库

在能做任何 *** 作之前我们需要先创建一个数据库。本例中将使用 SQL Server Express。如果你没有安装,可以从这里下载 SQL Server Express。安装完成之后,创建一个名为 CallingWebApiFromMvc 的数据库。这就是第一步要做的。

Api 项目还需要一个数据库连接字符串,否则我们寸步难行。把下面这段代码插入到 Api 项目的Webconfig 文件中:

<connectionStrings>

<add name="ApiFromMvcConnection" connectionString="Data Source=(local);Initial Catalog=CallingWebApiFromMvc;Integrated Security=True" providerName="SystemDataSqlClient" /></connectionStrings>

认证(Identity)框架会自动创建我们管理用户所需要的成员关系表,现在不需要担心去提前创建它们。

第2步:添加相关的Nuget包

接下来我们添加用于OWIN和Windows认证的Nuget包。打开包管理控制台,切换Api项目为缺省项目,输入以下命令:

Install-Package MicrosoftAspNetWebApiOwin

Install-Package MicrosoftOwinHostSystemWeb

Install-Package MicrosoftAspNetIdentityEntityFramework

Install-Package MicrosoftAspNetIdentityOwin

使用这些包可以在我们的应用中启动一个OWIN服务器,然后通过EntityFramework把我们的用户保存到SQL Server。

第3步:添加管理用户的Identity类

我们使用基于Windows认证机制之上的Entity框架来管理数据库相关的业务。首先我们需要添加一些用于处理的类。在Api项目里添加一个Identity目录作为我们要添加类的命名空间。然后添加如下的类:

public class ApplicationUser : IdentityUser

{

}

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>

{ public ApplicationDbContext() : base("ApiFromMvcConnection") {}

public static ApplicationDbContext Create()

{ return new ApplicationDbContext();

}

}

注意我们传给基类构造函数的参数ApiFromMvcConnection要和Webconfig中的连接字符串中的name相匹配。

public class ApplicationUserManager : UserManager<ApplicationUser>

{ public ApplicationUserManager(IUserStore<ApplicationUser> store) : base(store)

{

} public static ApplicationUserManager Create(IdentityFactoryOptions<ApplicationUserManager> options, IOwinContext context)

{ var manager = new ApplicationUserManager(new UserStore<ApplicationUser> (contextGet<ApplicationDbContext> ()));

// Configure validation logic for usernames

managerUserValidator = new UserValidator<ApplicationUser> (manager)

{

AllowOnlyAlphanumericUserNames = false,

RequireUniqueEmail = true

};

// Configure validation logic for passwords

managerPasswordValidator = new PasswordValidator

{

RequiredLength = 6,

RequireNonLetterOrDigit = true,

RequireDigit = true,

RequireLowercase = true,

RequireUppercase = true,

}; var dataProtectionProvider = optionsDataProtectionProvider;

if (dataProtectionProvider != null)

{

managerUserTokenProvider = new DataProtectorTokenProvider<ApplicationUser> (dataProtectionProviderCreate("ASPNET Identity"));

} return manager;

}

}

第4步:添加OWIN启动类

为了让我们的应用程序作为OWIN服务器上运行,我们需要在应用程序启动时初始化。我们可以通过一个启动类做到这一点。我们将装点这个类的

OwinStartup属性,因此在应用程序启动时触发。这也意味着,我们可以摆脱的Globalasax和移动它们的

Application_Start代码转换成我们新的启动类。

using MicrosoftOwin;

[assembly: OwinStartup(typeof(LevelnisLearningCallingWebApiFromMvcApiStartup))]

namespace LevelnisLearningCallingWebApiFromMvcApi

{

using System;

using SystemWeb>

以上就是关于webapi接收不到frombody实体类传入的数据全部的内容,包括:webapi接收不到frombody实体类传入的数据、根据ip地址能查到具体地址吗、wpf 数据库是webapi的项目怎么改为本地调用执行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9722130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存