net webapi controller 怎么获取post body里面的数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了net webapi controller 怎么获取post body里面的数据相关的知识,希望对你有一定的参考价值。
参考技术A 1.服务器认证(Server Authentication)HttpClient处理服务器认证几乎是透明的,仅需要开发人员提供登录信息(login credentials)。登录信息保存在HttpState类的实例中,可以通过 setCredentials(String realm, Credentials cred)和getCredentials(String realm)来获取或设置。
HttpClient内建的自动认证,可以通过HttpMethod类的setDoAuthentication(boolean doAuthentication)方法关闭,而且这次关闭只影响HttpMethod当前的实例。
2.代理认证(proxy authentication)
除了登录信息需单独存放以外,代理认证与服务器认证几乎一致。用 setProxyCredentials(String realm, Credentials cred)和 getProxyCredentials(String realm)设、取登录信息。
3.认证方案(authentication schemes)
是HTTP中规定最早的也是最兼容的方案,遗憾的是也是最不安全的一个方案,因为它以明码传送用户名和密码。它要求一个UsernamePasswordCredentials实例,可以指定服务器端的访问空间或采用默认的登录信息。
ASP.Net Core WebAPI - 请求的资源上不存在“Access-Control-Allow-Origin”标头
【中文标题】ASP.Net Core WebAPI - 请求的资源上不存在“Access-Control-Allow-Origin”标头【英文标题】:ASP.Net Core WebAPI - No 'Access-Control-Allow-Origin' header is present on the requested resource 【发布时间】:2017-09-28 00:29:32 【问题描述】:我在使用 IAsyncResourceFilter
实现时遇到了 CORS 问题。
我也希望能够从其他域调用我的操作...
我在 Startup
文件下定义了 CORS 策略,如下所示:
services.AddCors(options =>
options.AddPolicy("AllowAllOrigins",
builder =>
builder.AllowAnyMethod().AllowAnyHeader().AllowAnyOrigin();
);
);
在Configure
方法下:
app.UseCors("AllowAllOrigins");
不使用使用 IAsyncResourceFilter
的 TypeFilterAttribute
也可以正常工作。
例如在没有任何TypeFilterAttribute
属性的情况下调用我的 API 操作:
public bool Get()
return true;
但是当按如下方式添加我的TypeFilterAttribute
时,它不起作用并返回有关 CORS 的错误:
[MyTypeFilterAttribute("test")]
public bool Get()
return true;
我缺少什么吗?使用IAsyncResourceFilter
时应该添加什么?
以下是MyTypeFilterAttribute
的代码:(没有真正的逻辑……)
public class MyTypeFilterAttribute : TypeFilterAttribute
public MyTypeFilterAttribute(params string[] name) : base(typeof(MyTypeFilterAttributeImpl))
Arguments = new[] new MyTypeRequirement(name) ;
private class MyTypeFilterAttributeImpl: Attribute, IAsyncResourceFilter
private readonly MyTypeRequirement_myTypeRequirement;
public MyTypeFilterAttributeImpl(MyTypeRequirement myTypeRequirement)
_myTypeRequirement= myTypeRequirement;
public async Task OnResourceExecutionAsync(ResourceExecutingContext context, ResourceExecutionDelegate next)
context.Result = new OkResult();
await next();
public class MyTypeRequirement : IAuthorizationRequirement
public string Name get;
public MyTypeRequirement(string name)
Name = name;
【问题讨论】:
Ehm...发布类型过滤器的内容怎么样? 添加了代码。谢谢 在方法中添加[EnableCors("AllowAllOrigins")]
属性是否有效?
这个context.Result = new OkResult();
不只是清除任何标题集吗?
@Mardoxx 那应该是only set the status code。
【参考方案1】:
Cors 中间件在响应结果对象上设置标头。
我相信你正在使用context.Result = new OkResult();
重置这些
请参阅下面 poke 的回复。如果您在操作过滤器中设置任何结果,该结果会立即被发回,从而覆盖任何其他结果!
【讨论】:
找到了!确实有一些逻辑in the pipeline 使管道提前停止。请注意,这会检查Result != null
,因此您不能将任何内容分配给Result
,而Result
最初将是null
,因此您也不能在其中分配任何内容。这意味着如果您希望管道继续运行,您不能影响结果。
啊,我们走了!谢谢:)以上是关于net webapi controller 怎么获取post body里面的数据的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)
为什么 ASP.NET Core WebAPI 继承 ControllerBase 而不是 Controller ?
CORS asp.net 核心 webapi - 缺少 Access-Control-Allow-Origin 标头