2010-06-15 43 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);