2010-06-15 58 views
1

我的Silverlight 4應用程序託管在ASP.NET MVC 2 Web應用程序中。當我使用Internet Explorer 8瀏覽時,它工作正常。但Google Chrome(版本5)無法找到ASP.NET控制器。具體而言,以下ASP.NET控制器可以與Chrome和IE一起使用。Google Chrome客戶端的ASP.NET MVC路由問題

//[OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")] 
public ContentResult TestMe() 
{ 
    ContentResult result = new ContentResult(); 
    XElement response = new XElement("SvrResponse", 
    new XElement("Data", "my data")); 
    result.Content = response.ToString(); 
    return result; 
} 

如果我取消[OutputCache]屬性的註釋,那麼它可以在IE中使用,但不能在Chrome中使用。此外,我使用自定義的模型與控制器結合,因此,如果我寫了以下內容:

public ContentResult TestMe(UserContext userContext) 
{ 
    ... 
} 

它也可以與IE瀏覽器,但同樣無法與Chrome這給了我錯誤說資源沒有被發現。當然,我將IIS 6配置爲通過aspnet_isapi.dll處理所有請求,並且我在Application_Start()方法內的Web應用程序的Global.asax中註冊了自定義模型聯編程序。 有人可以解釋我可能是什麼原因?謝謝。

回答

1

這並不直接回答您的問題,但我建議您嘗試Fiddler,並查看瀏覽器發送的實際請求。比較不同之處並嘗試找出發生了什麼問題(您可以使用Fiddler中的「請求生成器」選項卡使用參數使用eh-hm,小提琴)。

+0

謝謝codeka。提琴手岩石。我發現了這個問題;谷歌瀏覽器在請求頭(編碼URL)中放入「Content-Type:application/x-www-form-urlencoded」,但IE不這樣做。因此,下一個問題是如何在Chrome中禁用網址編碼。 – synergetic 2010-06-15 08:22:55

1

我發現那是什麼的的WebRequest兩種方法:使用HTTPS時創建CreateHttp表現不同。始終使用創建方法根據協議實例化正確的請求。 我有類似的情況,我得到了什麼。對於下面的代碼試圖讓使用的WebRequest一些內容時,我們未找到例外:

HttpWebRequest request = WebRequest.CreateHttp(uri); 

但下面的一段效果很好:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);