ASP.NET MVC를 사용하여 웹 서비스를 작성 중이며 지원 목적으로 가능한 원시 원시 형식 (예 : HTTP 포함)에 최대한 가깝게 요청 및 응답을 기록 할 수 있기를 원합니다. 메소드, 경로, 모든 헤더 및 본문)을 데이터베이스에 삽입하십시오.
내가 확실하지 않은 것은이 데이터를 최소한 '혼돈 된'방법으로 유지하는 방법입니다. HttpRequest
객체 의 모든 속성을 검사하고 해당 객체에서 문자열을 작성 하여 요청에 대한 응답을 재구성 할 수는 있지만 실제 요청 / 응답 데이터를 잡고 싶습니다. 와이어로 보냈습니다.
필터, 모듈 등과 같은 차단 메커니즘을 사용하게되어 기쁩니다.이 솔루션은 IIS7에만 해당 될 수 있습니다. 그러나 관리 코드로만 유지하고 싶습니다.
어떤 추천?
편집 : I 노트 HttpRequest
가 SaveAs
디스크에 요청을 저장할 수있는 방법을하지만 공개적으로 (이에 저장 허용하지 않습니다 꽤 이유에 액세스 할 수 없습니다 내부 헬퍼 메소드의 부하를 사용하여 내부 상태의 요청을 재구성 사용자가 제공하는 스트림 모르겠습니다). 따라서 객체의 요청 / 응답 텍스트를 재구성하기 위해 최선을 다해야하는 것처럼 보이기 시작했습니다 ... 신음.
편집 2 : 메소드, 경로, 헤더 등을 포함한 전체 요청을 말했음을 유의하십시오 . 현재 응답은이 정보가 포함되지 않은 본문 스트림 만보 고합니다.
편집 3 : 아무도이 주변에서 질문을 읽지 않습니까? 지금까지 다섯 가지 답변이 있었지만 아직 전체 온-더-와이어 요청을 얻는 방법을 암시하는 사람은 없습니다. 예, 출력 스트림과 헤더, URL 및 요청 객체에서 URL 및 모든 내용을 캡처 할 수 있다는 것을 알고 있습니다. 나는 이미 질문에서 말했다 :
HttpRequest 객체의 모든 속성을 검사하고 그로부터 문자열을 작성하여 요청에 대한 응답을 재구성 할 수는 있지만 실제 요청 / 응답 데이터를 잡고 싶습니다. 유선으로 전송됩니다.
당신이 알고있는 경우에 전체 간단히 검색 할 수 없습니다 (등 헤더, URL, HTTP 방법 포함) 원시 데이터를 그 아는 것이 유용 할 것이다. 마찬가지로 모든 형식을 원시 형식으로 가져 오는 방법을 알고 있다면 (예, 헤더, URL, http 메소드 등을 포함하지 않고), 내가 요청한 것이므로 매우 유용합니다. 그러나 HttpRequest
/ HttpResponse
객체 에서 재구성 할 수 있다고 말하는 것은 유용하지 않습니다. 나도 알아 나는 이미 말했다.
참고 : 누군가 이것이 나쁜 생각이라고 말하거나 확장 성 등을 제한하기 전에 분산 환경에서 조절, 순차적 전달 및 재생 방지 메커니즘을 구현하므로 데이터베이스 로깅이 필요합니다. 나는 이것이 좋은 아이디어인지에 대한 토론을 찾고 있지 않다. 나는 그것이 어떻게 이루어질 수 있는지 찾고있다.