第一个问题!
环境
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.OriginalString
- Request.RawUrl
一切都给了我“ http://sub.example.com:15232/callback ”。
还要澄清这不是领域问题,我从 DotNetOpenAuth 收到的错误消息是
'http://sub.example.com:14107/accounts/openidcallback' not under realm 'http://*.example.com/'.
我不认为我已经填满了?
现在,我要考虑一些 hacky 的东西,比如
- 预处理器命令(#IF DEBUG THEN PUT PORT)
- 字符串替换 (Request.URL.Contains("localhost"))
所有这些都不是 100% 的解决方案,但我厌倦了思考我可能缺少的简单属性。我也读过这个,但这似乎没有一个可以接受的答案(更多的是关于路径而不是权威)。所以我把它放在你们身上。
概括
所以如果我有http://localhost:12345/login
,我需要http://localhost:12345/callback
从 Request 上下文中获取。
如果我有“ http://sub.example.com/login ”,我应该得到“ http://sub.example.com/callback ”,不管它在哪个端口上。
谢谢!(睡觉时间,早上会回答任何问题)