HTTP 요청에 의해 트리거 된 비동기 작업에서 사용할 HTML 블록을 생성해야합니다. HTTP 요청, HTML 블록을 매개 변수로 사용). 이미 HTML을 생성하는 .aspx 페이지가 있으며이 코드를 다시 사용하고 싶습니다..aspx 페이지를 ASP.NET 3.5 HTTP 요청 이외의 HTML 템플리트로 사용
나는 내가하고 싶은 어느 것도 세 가지 옵션을 참조하십시오
- 다시 쓰기 HTML을 반환하는 .NET 기능으로 .aspx 페이지에서 현재 기능을. 나는 절대적으로 필요한 경우가 아니라면 다시 쓰는 시간을 보내고 싶지 않습니다. 또한 HTML을 생성하는 .NET 코드는 .aspx 태그보다 유지 관리가 훨씬 적습니다 (예, XML 리터럴에서도 가능).
HTML 블록이 필요한 경우 로컬 서버의 .aspx 페이지에 HTTP 요청을하십시오. 이것의 비효율은 나에 관한 것이 아니지만 설계 타협이 그렇습니다. 응용 프로그램이 어떻게 구성되어 있는지의 때문에 나는 쓰레기에 내 .ASPX 코드를했을 :
경우 (localRequest)
{doOneThing();}
다른
{doTheOtherThing();}나는하고 싶지 않습니다.
이러한 HTML 청크를 추출하기 위해 ASP.NET 응용 프로그램 호스트를 만듭니다. 나는 이것이 2의 효율성을 향상시킬 것이지만 복잡하지는 않을 것이라고 생각한다.
다른 대안이 있습니까? 이상적인 방법은 .aspx 페이지 클래스를 인스턴스화하고 조롱 된 HttpRequest 또는 HttpContext로이를 실행하는 것입니다. 이것이 완료 될 수 있으며, 번거 로움의 가치가 있습니까?
이가) 어떻게 비동기 작업이 HttpContext를 유효한이 있는지 확인 않습니다
매우 명확하고 잘 참조 된 대답입니다. 불행히도, 나는 당신의 파트에서 비동기 페이지 작업에 필요한 규칙에 따라 플레이하지 않는다고 생각합니다. 그러나 파트 b)에 대한 솔루션은 내가 필요한 것입니다. 많은 감사합니다. – Alex
감사합니다! BTW, 위의 (b)는 비동기 스레드에서 유효한 HttpContext를 얻는 방법의 문제에 대한 마법 해결책이 아님을 명심하십시오. ASP.NET 비동기 페이지 (또는 마지막에 무거운 힘든 부분) 만 컨텍스트를 다른 스레드에 올바르게 전달할 수 있습니다. 즉, (b)를 가지고 있기 때문에 이제는 다른 스레드가 필요하지 않으면 모든 것이 설정되어 있습니다! –
매우 유용한 링크, 저스틴, 감사합니다. 내가 필요한 것! – EMP