2011-05-24 175 views
0

我只是將一個登錄提供程序集成到我的應用程序中,該應用程序在重定向回請求的頁面時正在發送查詢字符串參數,導致頁面無法加載。它被設置的方式是:使用查詢字符串

  • 我在本地主機/ AppName的/控制器,其索引方法需要[授權]控制器
  • 表單認證重定向到SSO
  • SSO重定向到localhost/AppName的/ Controller /?ticket = stringvalue
  • 頁面無法加載(瀏覽器有「無法顯示網頁」消息);刪除?門票業務使頁面加載。

我的索引方法是這樣的:

public ActionResult Index(string ticket) 

而且我認爲他會接受查詢字符串參數。我正在使用默認的路由配置,即:

routes.MapRoute(
    // Route name 
    "Default", 
    // URL with parameters 
    "{controller}/{action}/{id}", 
    // Parameter defaults 
    new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 
+0

如果使用完整的網址 - 即/ Home/Index?ticket ='ticket',它可以工作嗎? – 2011-05-24 12:54:53

+0

當您刪除'票據'業務時,是否仍然執行'索引'動作? – 2011-05-24 12:59:39

回答

1

這顯然有些棘手 - 因爲沒有理由不這麼做。

我敢打賭,如果你脫掉[Authorize]屬性,你會發現它可以與Url中的?ticket=[value]位一起使用。

如果是這樣的話,我估計窗體身份驗證被卡在重定向循環(和瀏覽器,過了一會就乾脆拒絕繼續) - 我認爲這不是治療目前UserIsAuthenticated=true等重定向到您的SSO 。 SSO表示用戶已登錄,因此重定向了票據參數 - 令人厭惡。

您可以使用VS調試器簡單地調試它,並簡化您的操作方法。同樣在Http級別進行調試通常更容易:下載Fiddler,然後在啓動並運行後使用特殊名稱http://ipv4.fiddler而不是http://localhost擊中您的站點。

您的代碼中必須包含更多您未包括的內容 - 大概是某處您有代碼攔截ticket並將用戶設置爲在MVC操作方法啓動之前進行身份驗證?如果是這樣 - 我認爲這是失敗的。

+0

由於我不能提交我自己的答案,我只是把它扔在這裏:我很笨。如果服務器名稱設置爲'localhost'而不是'http:// localhost'。 – raoul1034 2011-05-24 13:34:34

+0

啊 - 現在我會*想*說我以前從未這樣做過......但我不能;) – 2011-05-24 13:46:12