У нас есть проект, который использует несколько доменов (с арендаторами), и когда нам нужно сгенерировать абсолютный URL, мы использовали, чтобы сделать это:Вы можете блокировать метод в Mvc библиотеки (или действительно любой класс)
var forgotUrl = Url.Action("Forgot", "Account", null, this.Request.Url.Scheme);
Это сработало хорошо, и иногда вам нужны абсолютные URL-адреса, например, если вы отправляете электронные письма со ссылками на сброс пароля.
Однако, мы в настоящее время осуществляется SSL с обратного прокси-сервера, не означает, что this.Request.Url.Scheme
больше не дает нам правильный домен.
Поэтому мы должны сделать что-то вроде этого вместо
var forgotUrl = CurrentHostWithSchemeWithoutTrailingSlash + Url.Action("Forgot", "Account");
Для упрощения мы сделали метод расширения, например, так
Url.AbsoluteAction("Forgot", "Account", *data*)
И что все работает, как и следовало ожидать, так что все хорошо, тем не менее, вы все равно можете испортить upp, написав строку, вызывающую оригинал Url.Action
, и отправку в this.Request.Url.Scheme
.
Так что мой вопрос просто: есть ли способ блокировать использование этого или скрывать его, или давать ошибки компилятора, предупреждения, что-нибудь?
Возможный дубликат [Поиск всех ссылок на метод с Roslyn] (http://stackoverflow.com/questions/31861762/finding-all-references-to-a-method-with-roslyn) –
Можете ли вы использовать Resharper ? – Evk
Итак, вы можете использовать производный класс 'Controller' как базу для всех ваших контроллеров и перезаписать свойство' Url'. Для просмотров это выглядит актуальным: [Изменение базового типа вида бритвы] (http://haacked.com/archive/2011/02/21/changing-base-type-of-a-razor-view.aspx/) – spender