第一个问题!
环境
MVC、C#、AppHarbor。
Problem
我正在调用 openid 提供商,并根据域生成绝对回调 url。
在我的本地机器上,如果我点击的话,效果很好http://localhost:12345/login
Request.Url; //gives me `http://localhost:12345/callback`
但是,在我正在部署的Appharbor上,因为它们正在使用非标准端口,即使我在使用它”http://sub.example.com/login http://sub.example.com/login"
Request.Url; //gives me http://sub.example.com:15232/callback
这搞砸了我的回调,因为端口号不在原始源 URL 中!
我试过了
- 请求地址
- Request.Url.OriginalString
- 请求.RawUrl
一切都给了我“http://sub.example.com:15232/callback 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% 的解决方案,但我厌倦了思考我所缺少的简单属性。我也读过this https://stackoverflow.com/questions/40680/how-do-i-get-the-full-url-of-the-page-i-am-on-in-c但这似乎没有一个公认的答案(更多的是关于路径而不是权威)。所以我把它送给你们。
Summary
所以如果我有http://localhost:12345/login
, 我需要得到http://localhost:12345/callback
来自请求上下文。
如果我有“http://sub.example.com/login http://sub.example.com/login“,我应该得到”http://sub.example.com/callback http://sub.example.com/callback”,无论它位于哪个端口。
谢谢! (睡觉时间,早上会回答任何问题)