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的项目怎么改为本地调用执行等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)