ฉันใช้ openid-selector กับ DotNetOpenAuth ในแอป MVC 3 ของฉัน เมื่อใดก็ตามที่ฉันตั้งค่าตัวแปรเซสชันและส่วน DotNetOpenAuth อยู่ใน web.config ตัวแปรเซสชันของฉันจะไม่ติดอยู่หลังจากการเปลี่ยนเส้นทาง
ฉันตรวจสอบตัวแปร Session.SessionID แล้ว และยังคงเหมือนเดิม ดังนั้นฉันจึงอยู่ในเซสชันเดียวกัน (ฉันเชื่อว่า) แต่เมื่อฉันตรวจสอบตัวแปรเซสชัน ฉันเพิ่งตั้งค่าหลังจากการเปลี่ยนเส้นทาง ตัวแปรทั้งหมดจะถูกตั้งค่าเป็นโมฆะ
ฉันไม่เคยเห็นใครที่มีปัญหานี้เลย ฉันสงสัยว่า DotNetOpenAuth ยังไม่พร้อมสำหรับ MVC 3 หรือไม่ ฉันใช้ DotNetOpenAuth เวอร์ชันล่าสุดเช่นกัน
นี่คือส่วนที่เกี่ยวข้องของ web.config หากช่วยได้:
<configSections>
<section name="uri" type="System.Configuration.UriSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
<section name="dotNetOpenAuth" type="DotNetOpenAuth.Configuration.DotNetOpenAuthSection" requirePermission="false" allowLocation="true"/>
</configSections>
<uri>
<idn enabled="All"/>
<iriParsing enabled="true"/>
</uri>
<system.net>
<defaultProxy enabled="true"/>
<settings>
<servicePointManager checkCertificateRevocationList="true"/>
</settings>
</system.net>
<dotNetOpenAuth>
<openid>
<relyingParty>
<security requireSsl="false"/>
<behaviors>
<add type="DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform, DotNetOpenAuth"/>
</behaviors>
</relyingParty>
</openid>
<messaging>
<untrustedWebRequest>
<whitelistHosts>
<add name="localhost"/>
</whitelistHosts>
</untrustedWebRequest>
</messaging>
<reporting enabled="true"/>
</dotNetOpenAuth>
อัปเดต:
มันเกิดขึ้นบนเซิร์ฟเวอร์การพัฒนาของฉัน ทั้งใน IIS หรือเมื่อฉันรันเซิร์ฟเวอร์การพัฒนา ASP.NET
นอกจากนี้ ฉันได้ลองใช้เซสชันทั้งระหว่างดำเนินการและนอกกระบวนการโดยใช้เซิร์ฟเวอร์สถานะ และมันก็ไม่ได้สร้างความแตกต่าง
เกี่ยวกับเซสชันใหม่ ฉันได้ตรวจสอบเหตุการณ์ session_start แล้ว และไม่ได้ถูกเรียก ฉันยังตรวจสอบ Session.IsNewSession และนั่นก็ส่งคืนเท็จเช่นกัน ดังนั้นมีบางอย่างสุ่ม (หรืออาจจะไม่สุ่ม) กำลังลบตัวแปรเซสชันของฉัน!