2016-05-17 2 views
1

У меня есть веб-сайт, размещенный в Azure, которая будет доступ с URL https://abc.cloudapp.net/controller1/action1/parameter1Перенаправление в asp.net MVC URL для конкретного контроллера/действия/параметра с использованием httpRedirect в web.config

Мой клиент хочет следующее.

Когда мы пытаемся получить доступ к URL-адресу «https://abc.cloudapp.net», он должен автоматически перенаправить меня на фактический URL, упомянутый выше для веб-сайта.

Я хочу, чтобы это было достигнуто с помощью web.config. и я попробовал несколько комбинаций (пара из них приведена ниже).

Комбинация 1:

<system.webServer> 
    <rewrite> 
    <rules> 
     <rule name="Redirect to Full URL" stopProcessing="true"> 
      <match url=".*" /> 
      <conditions> 
       <add input="{URL}" pattern="^abc.cloudapp.net$" /> 
      </conditions> 
      <action type="Redirect" url="https://abc.cloudapp.net/controller1/action1/parameter1" redirectType="Permanent" /> 
     </rule>    
    </rules> 
    </rewrite> 
</system.webServer> 

Комбинация 2:

<system.webServer> 
    <rewrite> 
    <rules> 
     <rule name="Redirect to Full URL" stopProcessing="true"> 
      <match url="https://abc.cloudapp.net" /> 
      <action type="Redirect" url="https://abc.cloudapp.net/controller1/action1/parameter1" redirectType="Permanent" /> 
     </rule>    
    </rules> 
    </rewrite> 
</system.webServer> 

Ни одна из этих комбинаций не работал. Я опубликовал обходное решение ниже для этой проблемы. Однако мне нужна быстрая помощь в этом для постоянного решения. Мне все еще нужна помощь в этом, может кто-нибудь помочь.

+0

'' будет выдавать redirectType = "Постоянная" '301 Permanent' запросы. Они кэшируемые. В браузере. Любые последующие запросы к ресурсу будут перенаправляться из кеша, даже не отправив запрос на исходный сервер. Это делает отладку очень запутанной. Stick с '302 Found' до тех пор, пока вы не заработаете:' redirectType = "Found" и выясните, как [сбросить эти отвратительные 301 ответы из кеша вашего браузера] (https://www.google.co.uk/поиск? д = удалить + 301 + перенаправлять + от + браузер + кэш). – spender

ответ

0

Я нашел обходное решение для этого.

Когда мы используем URL-адрес «https://abc.cloudapp.net», используя конфигурацию маршрута по умолчанию, мы можем установить это, чтобы перейти к действию 1 в контроллере1.

Затем в «action1» из «controller1», если мы видим, что параметр «parameter1» равен null (должен быть delared как тип с нулевым), нам нужно инициализировать параметр1 до известного значения и перенаправить на тот же «action1» "в„controller1“

public ActionResult Index(int? parameter1) 
{ 
    if(string.IsNullOrEmpty(parameter1) 
    return RedirectToAction("action1", "controller1", new {@parameter1 = "knownValue"}); 
    else 
    { 
    //whatever action you wanted to do based on value in parameter1 
    } 
} 

Однако весь этот метод требует жесткого кодирования, мы присваиваем значение ноу к paramter1. Если есть изменение в этом значении, нам нужно изменить код Следовательно, я не рекомендую это. Однако на данный момент я использовал это обходное решение. Мне все еще нужно правильное решение этой проблемы.

MY R & D продолжается ... ... ... ... ...

Смежные вопросы