Получить оригинальный 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"независимо от того, на каком порту он находится.

Спасибо! (Время сна, утром отвечу на любые вопросы)

Ответы на вопрос(6)

Ваш ответ на вопрос