2016-05-17 72 views
1

重定向一個asp.net MVC URL到一個特定的控制器/動作/用參數httpRedirect我在Azure中託管的網站,將與URL https://abc.cloudapp.net/controller1/action1/parameter1在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'請求。這些是可緩存的。在瀏覽器中。對資源的任何後續請求都將從緩存中重定向,而不會向原始服務器發出請求。這使調試非常混亂。堅持用'302 Found'直到你找到它的工作:'redirectType =「找到」',並弄清楚如何[從瀏覽器的緩存中清除那些討厭的301響應](https://www.google.co.uk /查詢q =除去+ 301 + +從瀏覽器高速緩存+重定向+)。 – spender

回答

0

我找到了解決方法。

當我們使用url「https://abc.cloudapp.net」,使用默認的路由配置,我們可以將其設置爲在controller1中的action1。

然後在「控制器1」,「動作1」,如果我們看到「參數1」爲空(必須delared爲可空類型),我們需要的參數1初始化爲已知值,並重定向到同一「動作1 「在‘​​控制器1’

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繼續... ... ... ... ...