Câu hỏi đầu tiên!Nhận url gốc mà không có cổng không chuẩn (C#)
Môi trường
MVC, C#, AppHarbor.
Vấn đề
tôi kêu gọi một nhà cung cấp OpenID, và tạo ra một địa chỉ gọi lại tuyệt đối dựa trên tên miền.
Trên máy tính địa phương của tôi, điều này hoạt động tốt nếu tôi trúng http://localhost:12345/login
Request.Url; //gives me `http://localhost:12345/callback`
Tuy nhiên, trên AppHarbor nơi tôi đang triển khai, bởi vì họ đang sử dụng cổng non-standard, ngay cả khi tôi đang đánh nó tại "http://sub.example.com/login"
Request.Url; //gives me http://sub.example.com:15232/callback
Và điều này vít lên gọi lại của tôi, vì số cổng không có trong url nguồn ban đầu!
Tôi đã thử
- Request.Url
- Request.Url.OriginalString
- Request.RawUrl
Tất cả mang lại cho tôi "http://sub.example.com:15232/callback".
Ngoài ra để làm sáng tỏ rằng đây không phải là một vấn đề Realm, thông báo lỗi tôi nhận được từ DotNetOpenAuth là
'http://sub.example.com:14107/accounts/openidcallback' not under realm 'http://*.example.com/'.
Tôi không nghĩ rằng tôi đã nhồi mà lên?
Bây giờ, tôi muốn xem xét một số nội dung hacky như
- lệnh preprocessor (# nếu DEBUG sau đó đặt PORT)
- chuỗi thay thế (Request.URL.Contains ("localhost"))
Tất cả những điều này không phải là 100% giải pháp, nhưng tôi bị bệnh về việc nghiền ngẫm về những gì có thể là một tài sản đơn giản mà tôi bị thiếu. Tôi cũng đã đọc this nhưng điều đó dường như không có câu trả lời được chấp nhận (và nhiều hơn về đường dẫn thay vì quyền hạn). Vì vậy, tôi đưa nó về phía các bạn.
Tóm tắt
Vì vậy, nếu tôi đã http://localhost:12345/login
, tôi cần phải nhận được http://localhost:12345/callback
từ bối cảnh yêu cầu.
Và nếu tôi có "http://sub.example.com/login", tôi sẽ nhận được "http://sub.example.com/callback", bất kể cổng đó đang bật.
Cảm ơn!(Thời gian ngủ, sẽ trả lời bất kỳ câu hỏi nào vào buổi sáng)
Tôi đã kết thúc bằng cách sử dụng UrlReferrer (điều này không có cổng vì một số lý do GRR!) Nhưng bài đã dẫn tôi tới đó. Tôi không ngay lập tức chắc chắn về bất kỳ chi nhánh nào, nhưng cảm ơn anyway :) –
bạn đã thử sử dụng một số javascript để có được cổng? bạn có thể vượt qua nó trong chuỗi truy vấn hoặc đăng lại. – Robert
Đó là khá hacky, không phải cái gì tôi muốn dựa vào. –