Url.Action, не включая номер порта - PullRequest
8 голосов
/ 17 июля 2011

У меня есть частичное представление, которое отображается на странице без HTTPS, но ПОСТАВЛЯЕТСЯ контроллеру, который требует SSL.Определение формы таково:

        <form id="authForm"
          method="post"
          action="@Url.Action("authenticate", "auth", new {}, "https")">

Проблема, с которой я столкнулся, заключается в том, что в Visual Studio и при отладке хост и порт имеют значение localhost:64043.Однако приведенный выше вызов Url.Action не вводит номер порта, а это означает, что браузер указывает на мою установку IIS.Должен ли я добавить что-то еще или переопределить этот метод?Я хочу, чтобы моя заявка была независимой от местоположения.

Заранее спасибо!

Ответы [ 3 ]

10 голосов
/ 17 июля 2011

Вы можете включить его следующим образом:

@Url.Action(
    "authenticate", 
    "auth", 
    null, 
    "https", 
    Request.Url.Host + ":" + Request.Url.Port
)

Конечно, это означает, что ваш локальный веб-сервер должен поддерживать SSL, что не относится к Cassini.Вы можете использовать IIS Express , чтобы это работало.

0 голосов
/ 17 июля 2011

Соединения Http и https обычно находятся на двух разных портах, поэтому, если вы переходите с одного протокола на другой, вам нужно либо использовать стандартный порт, либо самостоятельно указать определенный порт.Нет никакого разумного способа, которым универсальная система может определить правильный порт

0 голосов
/ 17 июля 2011

Встроенный сервер разработки не поддерживает HTTPS, но вы можете использовать локальный IIS - см. ЗДЕСЬ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...