ASP.NET MVC Raw JSON Post 데이터 읽기
미치겠다.ASP를 사용하고 있습니다.NET MVC. Http Post 액션을 가진 컨트롤러가 있으며, 다른 서버에서 호출된 콜백 URL로 동작합니다(내 제어가 아님).WebAPI나 Model Binding을 사용하지 않고 JSON에 게시된 JSON을 동적으로 읽고 싶습니다.또한 URL에는 전달된 쿼리 문자열 매개 변수가 있습니다.
콜백 URL은 다음과 같습니다.
http://domain.com/callback?secret=1234
다음과 같은 방법으로 투고된 입력을 읽어 보았습니다.
[HttpPost]
public ActionResult Callback( String secret )
{
String jsonData = new StreamReader(this.Request.InputStream).ReadToEnd();
// ...
}
그러나 "jsonData"는 항상 null이거나 비어 있습니다.
저는 게시된 입력을 받아 JsonFx에 붙이고 싶기 때문에 콘텐츠에 동적으로 액세스 할 수 있습니다.가장 쉬운 방법 없을까요?
갱신하다
나는 다음과 같은 것을 발견했다.
위의 DOES는 기능하지 않지만(jsonData는 늘 또는 빈 상태), 발신측 서버에서 사용할 수 있는 작은 옵션 중 "secret" 쿼리 문자열 파라미터를 생략하도록 설정했을 경우 다음과 같이 동작합니다.이것은 서버가 아니기 때문에 발신측 서버에서 할 수 있는 모든 것입니다.이 경우 jsonData에는 올바른 게시된 JSON 문자열이 있습니다.
[HttpPost]
public ActionResult Callback( /* String secret */ )
{
String jsonData = new StreamReader(this.Request.InputStream).ReadToEnd();
// ...
}
이 문제는 해결하기가 매우 힘들고 쿼리 문자열과 표준 MVC 컨트롤러에 게시된 JSON 데이터를 모두 받아들이는 쉬운 방법을 모르겠습니다.
다양한 서드파티 서버로부터의 다양한 데이터(GET 경유, 폼 POST 경유, JSON POST 경유, 쿼리 문자열 포함 JSON POST 경유 등)를 수신하는 액션 메서드를 갖춘 "콜백 컨트롤러"가 있습니다.이러한 콜백은 정보 전달에 사용되는 형식이나 방법을 제어할 수 없는 가맹점형 콜백입니다.콜백을 받아들이고 거기에 있어야 할 정보를 처리하기만 하면 됩니다.
컨트롤러에서는 "JSON POST with a Query String"을 제외하고 모두 정상적으로 작동합니다.
이것은 (적어도) 표준 ASP의 결점으로 보입니다.NET MVC 컨트롤러.--
표준 ASP에서 사용할 수 있는 해결책을 제안할 수 있는 사람이 있습니까?NET MVC 컨트롤러?
ASP라는 사실을 고려한다면 초기 접근법이 효과적일 것입니다.NET MVC 모델바인딩은 스트림을 이미 읽었으므로 되감아야 합니다.
[HttpPost]
public ActionResult Callback(string secret)
{
Request.InputStream.Seek(0, SeekOrigin.Begin);
string jsonData = new StreamReader(Request.InputStream).ReadToEnd();
// ...
}
를 리셋 합니다.position
로로 합니다.Zero
개울을 읽기 전에. Request.InputStream.Position = 0
ASP의 경우.NET Core 2 this works works 。이거면 돼요.
[HttpPost]
public ActionResult RawTest() {
using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
{
string content = reader.ReadToEndAsync().Result;
//...
}
//...
}
언급URL : https://stackoverflow.com/questions/17822278/asp-net-mvc-read-raw-json-post-data
'programing' 카테고리의 다른 글
wordpress 플러그인 페이지에서 현재 페이지 ID 가져오기 (0) | 2023.03.28 |
---|---|
php 루프의 모든 n번째 항목에 클래스를 추가하려면 어떻게 해야 합니까(wordpress (0) | 2023.03.28 |
이벤트 목록 (0) | 2023.03.28 |
ng-include src를 동적으로 구축하려면 어떻게 해야 합니까? (0) | 2023.03.28 |
플라스크에서 ajax 호출을 사용하여 파일을 업로드하는 방법 (0) | 2023.03.28 |