0

인증을 위해 Webmatrix를 사용하는 ASP.Net MVC 4 응용 프로그램에서 작업하고 있습니다. 나는 내 web.config 파일"SQLServer"모드로 설정된 URL의 세션 ID

<sessionState mode="SQLServer" cookieless="true" allowCustomSqlDatabase="true" 
    sqlConnectionString="Data Source=server;Initial Catalog=ASPState;Persist 
          Security Info=True;User ID=user;Password=password" 
    timeout="2880" sqlCommandTimeout="10" /> 

나는 ASPState 데이터베이스가 채워지 볼 수에 다음과 같은,하지만 난 여전히 URL에서 세션 ID를 얻고있다. Chrome을 통해 액세스하려고하면 많은 리디렉션에 오류가 발생합니다. 내가 어떤을하지 않은

Unable to serialize the session state. In 'StateServer' and 'SQLServer' mode, ASP.NET will serialize the session state objects, and as a result non-serializable objects or MarshalByRef objects are not permitted. The same restriction applies if similar serialization is done by the custom session state store in 'Custom' mode.

: 나는 IE를 통해 액세스 할 때 그것은 (세션 ID가 URL에 불구하고)하지만 오류가 나는 다음과 같은 오류에 로그온 할 때 내가 리디렉션을 볼 경우에도 작동 Webmatrix에 대한 사용자 정의는 모두 기본값입니다. web.config 파일에 URL을 유지하고 DB를 사용하려면 세션 ID가 필요합니다.

+0

이 메시지는 직렬화 할 수없는 세션 클래스에 추가를 시도한다고 말합니다. 예를 들어 사전 <>은 세션이나 [직렬화]를 사용하지 않는 클래스가있는 다른 목록에 저장할 수 없습니다. 예어. – Aristos

답변

2

우선 쿠키를 false로 설정해보십시오. 둘째, ASPState를 사용할 때 allowCustomSqlDatabase를 false로 설정해야하며 세 번째는 연결 문자열에 초기 카탈로그를 지정하지 않습니다. SQLState는 백그라운드에서 자동으로 수행합니다. 네째, 직렬화하려고하는 것이 무엇인지 모르겠지만 세션에 저장하려고하는 클래스 위에 [Serializable] 특성을 넣어야합니다.

URL 문자열의 세션 ID는 IIS 또는 IIS Express를 사용하고 있습니까? IIS는 작은 유틸리티 aspnet_filter.exe을 사용하여 세션 ID가있는 URL을 수락하고 내부적으로 적절한 주소로 리디렉션합니다. 정보가 다시 반환 될 때도 마찬가지입니다. URL은 다시 장식 과정을 거칩니다. 그러나 IIS Express에서 해당 유틸리티를 사용하는지 확신 할 수 없습니다. 어떤면에서는 개발자 기계에서 쿠키를 끄는 것이 너무 많은 의미를 갖지는 않습니다.

+0

+1 aspnet_filter.exe에 대한 통찰력을 제공합니다. 나는 IIS가 각각의 URL에 세션 아이디를 다른 URL로 취급할지 여부를 찾고있었습니다. 감사. –