最初の質問!
環境
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
ポート番号が元のソースURLになかったので、これは私のコールバックを台無しにします!
私はもう試した
- 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 THEN PUT PORT)
- 文字列置換(Request.URL.Contains( "localhost"))
これらはすべて100%の解決策ではありませんが、私が見逃している単純なプロパティである可能性があるものについて熟考することにうんざりしています。私もこれを読みましたが、それは受け入れられた答えを持っていないようです(そしてそれは権威よりもむしろ道についてです)。だから私はあなたたちにそれを置いています。
概要
したがって、持っている場合は、リクエストコンテキストからhttp://localhost:12345/login
取得する必要があります。http://localhost:12345/callback
また、「http://sub.example.com/login 」がある場合は、どのポートにあるかに関係なく、「http://sub.example.com/callback」を取得する必要があります。
ありがとう!(睡眠時間、午前中に質問に答えます)