2012-04-08 2 views
1

관리자가 iis를 재설정하거나 asp.net MVC 애플리케이션 서버에서 일부 변경을 수행 할 수 있도록 모든 사용자에게 작업 및 로그 아웃을 저장하도록 요구해야합니다.각 세션 사용자에게 BroadCast Admin 메시지를 전송합니다.

세션 객체 컬렉션을 통한 루핑은 내가 배운 것 인 쓰레드 안전하지 않습니다.

다른 아이디어?

활성 세션을 보유 할 수 있다고해도 클라이언트에게 메시지를 보내는 방법은 무엇입니까?

미리 감사드립니다.

답변

1

데이터베이스에 메시지를 저장하고 모든 요청에 ​​대해 데이터베이스에 쿼리하여 메시지가 있는지 확인합니다.

+0

나는 각 요청에서 이미이를 수행하고 있습니다. 하지만 난 서버 자체 에서이 사용자의 요청 후 응답을 시작하고 싶습니다. – Deb

+1

그런 다음 새로운 요구 사항 인 메시지를 클라이언트로 푸시해야합니다. AJAX 폴링을 사용하여 서버에서 수행 할 수 있습니다. 그런 다음 서버 조!는 데이터베이스를 u 리할 수 있습니다. – usr

0

이것은 제대로 정의되지 않은 요구 사항처럼 보입니다.

심각한 유지 관리는 특정 시간에 수행되어야하며 사용자는 사전에 해당 시간대에 대해 사전에 경고해야합니다.

간단히 IIS를 다시 시작하는 것은 매우 빠른 절차입니다 ... 단순히 IIS를 다시 시작할 때 사용자가 작업을 잃을만한 이유가 있습니까? 이 StackOverflow 응답을 채우는 동안 예를 들어, 서버를 12 번 다시 시작했을 수 있습니다. Post를 클릭하면 서버가 다운 된 경우 시간 제한을 설정하고 텍스트 영역에 내 작업을 남겨 두거나 그렇지 않으면 서버가 다시 정상적으로 연결될 것입니다.

데이터를 제출하지 않고 링크를 클릭하기 만하면 브라우저가 시간 초과됩니다. 서버가 백업되면 간단한 새로 고침으로 충분하거나 결국 사용자를 데려갑니다. 그들은 가고 싶다.

순수한 AJAX 요청을하는 경우 브라우저를 사용하지 않고 누락 된 서버를 직접 처리해야하지만 분산 컴퓨팅의 여덟 가지 오류로 인해 해결해야합니다 # 1 : "네트워크가 안정적입니다." (http://en.wikipedia.org/wiki/Fallacies_of_Distributed_Computing 참조)

그래서 저는 실제로 그 요구 사항을 되돌릴 것입니다. 그들은 사용자가 필요를 충족시키지 못하는 (사용자가 데이터를 잃지 않고 합리적으로 좋은 경험을 가짐) 작업을 수행하도록 요청하고 있으며, 이는 복잡해지고 결국에는 취성있는 솔루션이 될 것입니다.

+0

세션이 손실되고 항목 중간에있는 모든 사용자가 빈약 한 관리자에게 한꺼번에 연기하기 시작했기 때문입니다. 배치의 첫 몇 달 동안 iisreset을 필요로하는 빌드가 자주 업데이트되므로 사용자 경고가 필요합니다. – Deb

+1

실망스럽게 들립니다. 아마도 "세션 데이터가 서버를 다시 시작한 후에도 남아 있어야합니다"라는 요구 사항이 필요합니까? 그것은 대개 멋진 것들보다 구현하는 것이 훨씬 쉽습니다 ... StateServer 또는 SQL Server에 세션 데이터를 저장하기 만하면됩니다. 기본 "프로세스 내"세션 저장소를 사용하는 경우에만 다시 시작할 때 모든 사용자 세션이 지워집니다. –

+0

은 그 중 하나 일뿐입니다. 관리자는 일부 작업을 할당하거나 회의 일정을 잡기를 원합니다. – Deb

관련 문제