2012-09-24 30 views
1

更新! 所以我認爲我解決了這個問題 - 現在又回來了。我的忽視路線似乎被忽略。每個請求正在重定向:(302在mvc路由之前似乎發生了重定向。幫助調試重定向

我有一個我正在工作的MVC網站,它的大部分是在EXTJS,所以他們只使用一個控制器,家庭和登錄視圖。漂亮的標準設置 - 並且這是上週工作的,索引操作在主控制器上被調用,它立即被重定向到登錄動作。好的 - 很好,這是預期的行爲。

只有現在,每個鏈接文件,CSS或JavaScript ,被重定向回到相同的登錄頁面,例外是通過其餘的Uri獲取的一對腳本文件,於是我下載了這個路由調試器在這裏傳遞,並將它傳遞給其中一個腳本文件。重新格式化並將其重定向到登錄頁面,並將returnurl參數設置爲fil我正在尋找。這使我認爲請求正在被重定向到mvc的任何路由之前。這可能嗎?我可以採取哪些進一步步驟來調試此問題?

這裏是我的Global.asax文件的路由內容:

/// <summary> 
    /// Registers the routes. 
    /// </summary> 
    /// <param name="routes">The routes.</param> 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
    routes.IgnoreRoute(@"{resource}.axd/{*pathInfo}"); 
    routes.IgnoreRoute(@"resources/*"); //Redirecting!! Css and image files 
    routes.IgnoreRoute(@"wcfrestbusinesslogic/*"); //This one works fine 
    routes.IgnoreRoute(@"ext/*"); //These are also redirecting 

    routes.IgnoreRoute(@"{*favicon}", 
         new 
         { 
          favicon = @"(.*/)?favicon.ico(/.*)?" 
         }); 

    routes.MapRouteLowercase(@"PasswordReset", 
           @"{action}/{guid}", 
           new 
           { 
           controller = @"home", 
           action = @"index" 
           }, 
           new 
           { 
           IsHome = new IsHomeActionConstraint(), 
           guid = @"^(\{{0,1}([0-9a-fA-F]){8}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){4}-([0-9a-fA-F]){12}\}{0,1})$" 
           }); 

    routes.MapRouteLowercase(@"Home", 
           @"{action}/{output}", 
           new 
           { 
           controller = @"home", 
           action = @"index", 
           output = UrlParameter.Optional 
           }, 
           new 
           { 
           IsHome = new IsHomeActionConstraint(), 
           output = @"(json|xml|pdf|jpg|jpeg|tiff|png|csv)?" 
           }); 

    routes.MapRouteLowercase(@"Home2", 
           @"{action}/{id}/{output}", 
           new 
           { 
           controller = @"home", 
           action = @"index", 
           id = UrlParameter.Optional, 
           output = UrlParameter.Optional 
           }, 
           new 
           { 
           IsHome = new IsHomeActionConstraint(), 
           id = @"[0-9]{1,}", 
           output = @"(json|xml|pdf)?" 
           }); 

    routes.MapRouteLowercase(@"Home3", 
           @"{action}", 
           new 
           { 
           controller = @"home", 
           action = @"index" 
           }, 
           new 
           { 
           IsHome = new IsHomeActionConstraint() 
           }); 

    routes.MapRoute(@"Action", 
        @"{controller}/{action}/{output}", 
        new 
        { 
         controller = @"Home", 
         action = @"Index", 
         output = UrlParameter.Optional 
        }, 
        new 
        { 
         output = @"(json|xml|pdf|png|csv)?" 
        }); 

    routes.MapRoute(@"Default", 
        @"{controller}/{action}/{id}/{output}", 
        new 
        { 
         controller = @"Home", 
         action = @"Index", 
         id = UrlParameter.Optional, 
         output = UrlParameter.Optional 
        }, 
        new 
        { 
         id = @"[0-9]{1,}", 
         output = @"(json|xml|pdf)?" 
        }); 


    } 
+1

你檢查了你的web.config文件嗎?任何形式的認證配置或類似的東西? –

+0

這是默認行: Gallen

+0

查看我的回答對於我如何解決我的問題 - 這些路由/身份驗證建議值得保留作爲真正的答案。 – Gallen

回答

2

那麼解決方案原來與SVN有關。我不得不恢復到該網站已經工作的時間,並從最新的更新中覆蓋了這一點。有些東西被緩存在某處,我不確定是否解決了問題,但如果遇到此問題並且沒有任何解決方案提供幫助,請查看您的源代碼管理。

感謝您的幫助。

UPDATE 的SVN的事情只是問題的一部分,它使用SVN本身 - 不過這是在從每個開發項目的變化上的特定文件的權限。

當我們的計算機名稱在週末發生變化時,返回問題。

問題的真正來源是IIS的匿名身份驗證設置爲使用IUSR,但它應該已被設置爲使用ApplicationPoolIdentity。

由於IUSR通過附加計算機名稱的方式工作,SVN中文件的權限都設置爲我們的舊名稱,所以當IIS試圖使用這些權限獲取任何內容時,它將失敗並被重定向到登錄頁面 - 甚至在連接MVC的路由管理器之前。

更新2 這一次遇到的問題,這時候一些web.config文件中都通過分享他們在我的機器上訪問,而這302件事開始發生。它顯示上述設置在iis中設置不正確。

3

這聽起來像你的窗體身份驗證保護的文件。

在你的Web.Config中有這樣的東西嗎?

<location path="resources"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 
<location path="ext"> 
    <system.web> 
     <authorization> 
      <allow users="*" /> 
     </authorization> 
    </system.web> 
</location> 
+0

是的 - 這似乎被忽略。是否有任何IIS設置或任何在web.config和mvc路由之前檢查的內容? – Gallen

+0

對不起,收回的答案,但這個問題已經回來,即使這些在我的IIS。 – Gallen

+0

@Gallen你還有問題嗎?這個答案幫了我。除非按指定的方式在web.config中添加路徑條目,否則所有未經身份驗證的請求都將被重定向。 – RayLoveless