代码之家  ›  专栏  ›  技术社区  ›  synergetic

Google Chrome客户端的ASP.NET MVC路由问题

  •  1
  • synergetic  · 技术社区  · 15 年前

    我的Silverlight 4应用程序托管在ASP.NET MVC 2 Web应用程序中。当我使用Internet Explorer 8浏览时,它工作正常。但是Google Chrome(版本5)找不到ASP.NET控制器。具体来说,下面的ASP.NET控制器既适用于chrome,也适用于ie。

    //[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,这会给我一条错误消息,告诉我找不到资源。当然,我配置了IIS6通过aspnet_isapi.dll处理所有请求,并且在我的web应用程序的global.asax的application_start()方法中注册了自定义模型绑定器。 有人能告诉我原因是什么吗?谢谢您。

    3 回复  |  直到 15 年前
        1
  •  1
  •   Dean Harding    15 年前

    这不能直接回答你的问题,但我建议你尝试一下 Fiddler ,并查看浏览器正在发送的实际请求。比较差异,找出问题所在(您可以使用fiddler中的“请求生成器”选项卡对eh-hm, 小提琴 参数)。

        2
  •  1
  •   Alexey Larchenko    13 年前

    我发现有两种方法 WebREST : 创造 创建HTTP 使用HTTPS时行为不同。总是使用 创造 方法根据协议实例化正确的请求。 我也遇到过类似的情况。对于以下代码,我们有 找不到 尝试使用获取某些内容时出现异常 WebREST :

    HttpWebRequest request = WebRequest.CreateHttp(uri); 
    

    但是下面这篇文章很有效:

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
    
        3
  •  0
  •   synergetic    15 年前

    好吧,我找到了解决这个问题的方法。在我的Silverlight应用程序中,我选择使用客户端堆栈而不是默认的HTTP堆栈。

    WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
    WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);
    

    参见: http://blogs.msdn.com/b/silverlight_sdk/archive/2009/08/12/new-networking-stack-in-silverlight-3.aspx