저는 사용자가 파일을 업로드 할 수 있도록하기 위해 ASP.Net 웹 사이트에서 Yahoo UI 라이브러리의 일부인 Yahoo 업 로더를 사용하고 있습니다. 익숙하지 않은 사용자를 위해 업 로더는 Flash 애플릿을 사용하여 FileOpen 대화 상자를보다 잘 제어 할 수 있습니다. 나는, 파일 형식에 대한 필터를 지정하는 여러 파일을 수 있도록 선택할 수 등이 큰, 그러나 다음과 같은 문서화 된 제한이 있습니다 :숨겨진 양식 필드에 ASP.Net 세션 ID를 넣을 수 있습니까?
이 때문에 알려진 플래시 버그의, Windows에서 파이어 폭스에서 실행 업 로더가 수행을 업로드시 올바른 쿠키를 보내지 마십시오. Firefox 쿠키를 보내는 대신 해당 도메인에 대한 Internet Explorer의 쿠키를 보냅니다. 이 문제를 해결하려면 쿠키없는 업로드 방법을 사용하거나 document.cookie를 업로드 요청에 추가하는 것이 좋습니다.
그래서 사용자가 Firefox를 사용 중이라면 파일을 업로드 할 때 쿠키를 사용하여 세션을 유지할 수 없습니다. 나는 그들이 누구인지 알아야하기 때문에 그들의 세션이 필요하다! 이 문제를 해결 나는 thusly 히 Application 개체를 사용하고 있습니다 :
Guid UploadID = Guid.NewGuid();
Application.Add(Guid.ToString(), User);
그래서, 나는 고유 ID를 생성하고 응용 프로그램 범위에서 Page.User
객체를 저장하는 키로 사용하고 있습니다. 파일을 업로드 할 때 해당 ID를 POST에 변수로 포함합니다. 이 실제로 작동
IPrincipal User = (IPrincipal)Application[Request.Form["uploadid"]];
을하지만 두 눈부신 단점이 있습니다 : 그런 다음 파일 업로드를 허용하는 핸들러에서, 내가 thusly 히 사용자 개체를 잡아
IIS 경우, 응용 프로그램 풀, 심지어는 사용자가 업로드 페이지를 방문한 후 실제로 파일을 업로드 할 때까지 응용 프로그램이 다시 시작될 때 응용 프로그램 범위에서 해당 "uploadid"가 삭제되고 인증 할 수 없기 때문에 업로드가 실패합니다.
웹 팜 (심지어 웹 가든) 시나리오로 확장하면 완전히 중단됩니다. 나는이 앱을 향후 확장 할 계획을 제외하고는 걱정하지 않을 수도 있습니다.
누구에게 더 좋은 방법이 있습니까? POST 변수에 실제 ASP.Net 세션 ID를 전달한 다음 다른 끝에서 해당 ID를 사용하여 세션을 검색하는 방법이 있습니까?
나는 Session.SessionID
을 통해 세션 ID를 얻을 수 있다는 것을 알고 있으며 YUI를 사용하여 다음 페이지에 게시하는 방법을 알고 있습니다. 내가 모르는 것은 SessionID
을 사용하여 상태 서버에서 세션을 가져 오는 방법입니다.
예, 세션을 저장하기 위해 상태 서버를 사용하므로 응용 프로그램/IIS를 다시 시작하고 웹 팜 시나리오에서 작동합니다.
이 내가 찾던 정확히 것입니다. 감사! –
안녕하세요 ... 링크가 깨졌습니다 .. 업데이트 할 수 있습니까? – Mulki
예, 우리는 이것을 필요로합니다! 새로운 링크를 제공해주세요! – pilavdzice