我有一个api控制器,它接收像public virtual async Task<ActionResult> TestCommAsync([FromBody] CommRequest commRequest)这样的主体的参数。
Comm请求对象如下所示
public class CommRequest
{
/// <summary>
/// Gets or sets the value that represents the collection of <see cref="CommunicationHistory"/>
public async Task<IActionResult> Method(string value, [FromBody] Person person)
person在这里可以是空的吗?
更新:忘记提到person对象有一个标记为[Required]属性的属性,并且我正在接收A non-empty request body is required
如何在FromBody核心(5.0)中传递可选的(可空的) ASP.NET参数?如果我没有在请求中发送body,则会得到415个不支持的媒体类型错误。这可以配置吗?如果是的话,如何在控制器或操作(而不是应用程序级别)上进行配置?我猜想它必须做一些与模型验证有关的事情,但不确定。谢谢。
[HttpGet("[action]")]
public async Task<IActionResult> GetElementsAsync([FromBody] IEnumerable<int> elements = default)
{
var result =
我使用的是ASP.NET核心3和Swashbuckle,大多数都是默认配置,我有一个带有字符串的DTO参数,我希望它是非空的。我怎样才能做到这一点?注意,在Swagger中,Required和nullability是不同的关注点。
它还使用了C#8和非空的东西,所以编译器应该已经将属性注释为非空的。可以理解的是,Swashbuckle还没有被更新以考虑到这一点(也许不能),但我希望能够以某种方式覆盖生成的元数据。
class MyDto {
[Required]
// I want this to show as non-nullable in the swagger docu
我正在尝试使用HttpClient发布到Web。当我在Web的保存方法中放置一个断点时,FromBody产品为空。这意味着,我将产品发布到Web的方式有问题。请有人看看下面的代码,看看我可能出了什么问题。我假设这与标题和内容类型有关。
发布从客户端存储库到Web的调用,该调用应该以JSON:的形式传递产品对象
public async Task<Product> SaveProduct(Product product)
{
using (var client = new HttpClient())
{
client.BaseAddress = new
我有一个简单的模型:
public class Form
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public long Id { get; set; }
public string Name { get; set; }
public List<FormField> FormFields { get; } = new List<FormField>();
}
public class FormField
{
[Key]
[Data
我使用的是asp.net核心web应用程序接口。下面是我的简单post函数,它只有一个字符串参数。问题是,当我使用FromBody时,字符串仍然为空。我正在使用PostMan测试我的服务。我希望原始数据从客户端传递到我的控制器。在Postman中,我选择了正文类型RAW,并设置了标题Content-Type text/plain。Raw Body只包含"Hello World“字符串。
[HttpPost]
[Route("hosted-services/tokenize-card")]
public IActionResult Test
我将非常简单的json数据发布到一个.net Core2.0API中。
为什么我有这样的方法:
public async Task<IActionResult> GetNewToken([FromBody]string id)
那么id是空的,但是如果我将它封装在一个模型中:
public class RandomViewModel
{
public string id { get; set; }
}
public async Task<IActionResult> GetNewToken([FromBody]RandomViewModel model)
那我
我使用这一行来使用API方法
var postTask = client.PostAsJsonAsync("AgregarNegocio", new StringContent(JsonConvert.SerializeObject(model).ToString(), Encoding.UTF8, "application/json"));
但是,当命中API方法时
public IActionResult AgregarNegocio([FromBody]NegocioViewModel model)
模型中的所有属性都是空的.我已经尝试过了,没有Fro
你知道为什么这样做吗:
public struct UserNameAndPassword
{
public string username;
public string password;
}
[HttpPost]
public IActionResult Create([FromBody]UserNameAndPassword usernameAndPassword)
{
Console.WriteLine(usernameAndPassword);
if (this.AuthenticationService.IsValidUserAndPasswor
我的方法的[FromBody]参数没有绑定时出了问题。
示例C#:
[Route("api/path")]
[HttpPost]
public void Post([FromBody] ComplexType param)
{
// param is null
}
public class ComplexType
{
public string name { get; set;}
}
我检查了帖子的正文内容和内容类型,看起来是正确的。
为什么它是空的,尽管彻底检查正在发布的数据和内容类型都匹配什么是预期的?
注:这是一个含糊不清的问题,因为我在诊断一个问题时遇到
我有一个简单的ApiController
public HttpResponseMessage Put(int orderid, [FromBody] Order order)
{
// Do something useful with order.Notes here
}
和一个类(实际的类包含更多的属性)
public class Order
{
public string Notes { get; set; }
}
并希望处理以下类型的PUT请求
PUT http://localhost/api/orders/{orderid}
Content-Type: applica
在我的WebAPI 2应用程序中,我在反序列化FromBody对象的List<string>属性时遇到了困难。(列表保持为空,而其他属性则被正确反序列化。)
无论我做什么,只有当我将属性更改为string[]时,该属性似乎才会正确地反序列化。不幸的是,这个属性需要是List<string>类型的。
根据,只要T不是Interface,就应该能够反序列化为Interface。
有没有人知道我可能做错了什么?
控制器:
public class ProjectsController : ApiController
{
public IHttpActionResult
当我尝试将一个字符串发送到我的web api时,该值为空。我试过用引号把它括起来,但它仍然是空的。
AngularJS代码:
return $http.post("http://localhost:59437/api/Recaptcha/Post",
vcRecaptchaService.getResponse());
Web Api代码:
[EnableCors("*", "*", "*")]
public class RecaptchaControlle
我有一个名为Log的属性,它试图将请求和响应的内容记录到文本文件中。我已经把它交给了我的财务总监,以涵盖所有的行动。在LogAttribute中,我以字符串形式读取内容(ReadAsStringAsync),这样就不会丢失请求体。
public class LogAttribute : ActionFilterAttribute
{
// ..
public override void OnActionExecuting(HttpActionContext actionContext)
{
// stuff goes here
var c