Я создаю веб-сайт с использованием MVC3, я использую синтаксис бритвы для создания представлений, и все это работает под лазурью.
В настоящее время я запускаюсь под лазурным эмулятором локально.
У меня есть вид на URL: http://localhost:81/Blah/Foo '.
В этой точке зрения я хочу получить Url для другого действия.
Для этого я использую: Url.Action( "SomeAction", "SomeController", null, this.Request.Url.Scheme)
Однако из-за балансировки нагрузки лазурный эмулятор делает номер порта, который выполняется при изменениях.
то есть. в то время как он работает на порту 81, запрос может поступать с порта 82.
Это приводит к созданию неправильного url http://localhost:82/Blah/Bar ', и я получаю ошибку 400, bad hostname.
Следуя информации в этом сообщении http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/9142db8d-0f85-47a2-91f7-418bb5a0c675/, я обнаружил, что могу получить правильный номер хоста и порта с помощью HttpContext.Request.Headers [ "Host" ].
Но я могу передать имя хоста Url.Action, если я попытаюсь передать имя хоста и порт, то он все еще добавляет то, что, по его мнению, является правильным портом, поэтому я заканчиваю localhost: 81: 82.
EDIT: Я нашел кого-то с той же проблемой. Кажется, что они собрали ту же самую информацию (кроме того, что они включили воспроизведение), но у них нет полезного исправления, поскольку я не могу указать номер порта вручную.
Я полагаю, что одно исправление должно было бы сделать мою собственную перегрузку Url.Action, которая позволяет мне указать порт.