在.net Core 1.0中解析AWS SNS通知 [英] Parsing AWS SNS notification in .net core 1.0
问题描述
我有一个VisualStudio17无服务器应用程序项目,并且正在使用.net核心Web Api。
I have a VisualStudio17 serverless application project and am using .net core Web Api.
我想确认我的SNS订阅,但是我遇到一个问题,即AWS发送标头 content-type $ c $的POST请求c>设置为
文本/纯文本; charset = UTF-8
而body为JSON。
I want to confirm my SNS subscription, but I have a problem that AWS sends the POST request with header content-type
set to text/plain; charset=UTF-8
while body is JSON.
以下是他们的文档:
POST / HTTP/1.1
x-amz-sns-message-type: Notification
x-amz-sns-message-id: da41e39f-ea4d-435a-b922-c6aae3915ebe
x-amz-sns-topic-arn: arn:aws:sns:us-west-2:123456789012:MyTopic
x-amz-sns-subscription-arn: arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55
Content-Length: 761
Content-Type: text/plain; charset=UTF-8
Host: ec2-50-17-44-49.compute-1.amazonaws.com
Connection: Keep-Alive
User-Agent: Amazon Simple Notification Service Agent
{
"Type" : "Notification",
"MessageId" : "da41e39f-ea4d-435a-b922-c6aae3915ebe",
"TopicArn" : "arn:aws:sns:us-west-2:123456789012:MyTopic",
"Subject" : "test",
"Message" : "test message",
"Timestamp" : "2012-04-25T21:49:25.719Z",
"SignatureVersion" : "1",
"Signature" : "EXAMPLElDMXvB8r9R83tGoNn0ecwd5UjllzsvSvbItzfaMpN2nk5HVSw7XnOn/49IkxDKz8YrlH2qJXj2iZB0Zo2O71c4qQk1fMUDi3LGpij7RCW7AW9vYYsSqIKRnFS94ilu7NFhUzLiieYr4BKHpdTmdD6c0esKEYBpabxDSc=",
"SigningCertURL" : "https://sns.us-west-2.amazonaws.com/SimpleNotificationService-f3ecfb7224c7233fe7bb5f59f96de52f.pem",
"UnsubscribeURL" : "https://sns.us-west-2.amazonaws.com/?Action=Unsubscribe&SubscriptionArn=arn:aws:sns:us-west-2:123456789012:MyTopic:2bcfbf39-05c3-41de-beaa-fcfcc21c8f55"
}
内容类型:文本,正文JSON。这使得解析非常困难,并且简单的
Content-type: text, body JSON. This makes it parsing quite difficult, and a simple
public void Post([FromBody] string t)//或动态t / code>
public void Post([FromBody] string t) // or dynamic t for the matter
不起作用并抛出请求在操作筛选器'Microsoft.AspNetCore.Mvc.ModelBinding中短路。
异常。
我错过了什么吗?他们为什么这样做,我该如何处理?
Am I missing something? Why are they doing this and how do I work with this?
推荐答案
我按照此答案,方法是将 text / plain
添加到 JsonInputFormatter
应该格式化的格式。
I made it work like I described in this answer, by adding text/plain
to formats that JsonInputFormatter
should format.
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc(config =>
{
foreach (var formatter in config.InputFormatters)
{
if (formatter.GetType() == typeof(JsonInputFormatter))
((JsonInputFormatter)formatter).SupportedMediaTypes.Add(
MediaTypeHeaderValue.Parse("text/plain"));
}
});
...
}
这篇关于在.net Core 1.0中解析AWS SNS通知的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!