Получить оригинальный URL без нестандартного порта (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
И это испортило мой обратный вызов, потому что номер порта не был в исходном URL-адресе источника!
я пробовал
Request.UrlRequest.Url.OriginalStringRequest.RawUrlВсе дает мнеhttp://sub.example.com:15232/callback».
Также, чтобы выяснить, что это не проблема Realm, я получаю сообщение об ошибке от DotNetOpenAuth:
'http://sub.example.com:14107/accounts/openidcallback' not under realm 'http://*.example.com/'.
Я не думаю, что я это запутал?
Теперь я собираюсь рассмотреть некоторые хакерские вещи, такие как
команды препроцессора (#IF ОТЛАДКА ПОСЛЕ ТОГО, КАК PUT)замена строки (Request.URL.Contains ("localhost"))Все это не 100% -ные решения, но мне надоело думать о том, что может быть простым свойством, которое мне не хватает. Я также прочиталэто но у этого, кажется, нет принятого ответа (и больше о пути, а не власти). Так что я обращаюсь к вам, ребята.
Резюме
Так что если бы яhttp://localhost:12345/login
, Мне нужно получитьhttp://localhost:12345/callback
из контекста запроса.
И если бы яhttp://sub.example.com/login"Я должен получить"http://sub.example.com/callback"независимо от того, на каком порту он находится.
Спасибо! (Время сна, утром отвечу на любые вопросы)