第一個問題!獲取非標準端口原始網址(C#)
環境
MVC,C#,AppHarbor。
問題
我打電話的OpenID提供商,並且基於域絕對的回調URL。
在我的本地機器上,這工作正常,如果我打http://localhost:12345/login
Request.Url; //gives me `http://localhost:12345/callback`
然而,在AppHarbor在那裏我部署,因爲他們使用的是非標準的端口,即使我打它在「http://sub.example.com/login」
Request.Url; //gives me http://sub.example.com:15232/callback
這螺絲了我的回調,因爲端口號是不是在原來的源地址!
我已經試過
- Request.Url
- Request.Url.OriginalString
- Request.RawUrl
所有給我 「http://sub.example.com:15232/callback」。
而且清理,這是不是一個領域的問題,我從DotNetOpenAuth收到錯誤消息是
'http://sub.example.com:14107/accounts/openidcallback' not under realm 'http://*.example.com/'.
我不認爲我已經塞滿這事呢?
現在,我就要考慮象
- 預處理命令(#IF DEBUG然後把PORT)
- 字符串替換一些哈克的東西(Request.URL.Contains( 「localhost」 的))
所有這些都不是100%的解決方案,但我厭倦了可能是一個簡單的屬性,我失蹤了。我也讀this,但似乎並沒有被接受的答案(更多的是關於路徑而不是權威)。所以我把它推向你們。
摘要
所以,如果我有http://localhost:12345/login
,我需要從請求上下文得到http://localhost:12345/callback
。
如果我有「http://sub.example.com/login」,我應該得到「http://sub.example.com/callback」,不管它在哪個端口上。
謝謝!(睡眠時間,將在早上回答任何問題)
我結束了使用UrlReferrer(這不具有的端口由於某種原因GRR!),但你職位帶領我走向那裏。我不立即確定任何後果,但無論如何感謝:) –
你嘗試使用一些JavaScript來獲取端口?你可以將它傳遞給查詢字符串或將其發回。 – Robert
這很哈克,不是我想要依賴的東西。 –