2012-01-25 23 views
8

Tôi đang sử dụng Visual Studio 2010 SP1 trong Windows 7 64bit dev hộp. Asp.net của tôi hoạt động tốt khi sử dụng IIS trên hộp nhưng khi tôi chuyển sang sử dụng Visual Studio Development Server, tôi nhận được ngoại lệ "System.Web.HttpException: Không thể xác thực dữ liệu" trong dòng này (trong sự kiện Application_AuthenticateRequest trong global.asax .cs):"System.Web.HttpException: Không thể xác thực dữ liệu" lỗi trong VS Development Server nhưng không phải trong IIS

FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value); 

Tại sao điều này không thành công khi sử dụng máy chủ web nội bộ?

Trả lời

16

Thử xóa cookie của bạn sau khi bạn chuyển đổi máy chủ. Cả hai máy chủ đều có cấu hình riêng và có thể là decryption key của riêng chúng mà cookie xác thực biểu mẫu được mã hóa và giải mã. Do đó, nếu bạn vẫn có cookie được mã hóa bởi IIS, thì hãy chuyển dự án để sử dụng máy chủ phát triển tích hợp và nhấn vào trang web, máy chủ đó không thể giải mã được cookie.

Bạn có thể ngăn chặn vấn đề này nếu bạn đặt chìa khóa giải mã trong web.config của bạn:

<machineKey decryptionKey="..." /> 
+0

Tôi gặp sự cố tương tự - Vui lòng trợ giúp http://stackoverflow.com/questions/34653227/how-to-decrypt-the-cookie-inside-custom-url-rewrite-provider – codetoshare

0

Còn có một nguyên nhân gây ra lỗi này. Nếu mục nhập MachineKey của bạn trong tệp Web.config kết thúc bằng

xmlns="" 

Sau đó, bạn cũng sẽ gặp phải lỗi này.

0

Tôi đã sử dụng phương pháp @Michiel van Oosterhout nhưng phương pháp này không hoạt động. tuy nhiên, sau đó tôi đã thêm:

<authentication mode="Forms"> 
    <forms protection="Encryption" enableCrossAppRedirects="true"/> 
</authentication> 

Bây giờ nó hoạt động.

Các vấn đề liên quan