1

私の 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では動作しません。もちろん、aspnet_isapi.dll を介してすべての要求を処理するように IIS 6 を構成し、Application_Start() メソッド内の Web アプリの Global.asax にカスタム モデル バインダーを登録しました。誰かが原因を説明できますか? ありがとうございました。

4

3 に答える 3

1

これはあなたの質問に直接答えるものではありませんが、Fiddlerを試して、ブラウザから送信されている実際のリクエストを確認することをお勧めします。違いを比較し、何が問題なのかを突き止めます (Fiddler の [Request Builder] タブを使用して、パラメーターをいじることができます)。

于 2010-06-15T07:00:36.320 に答える
1

私が発見したのは、WebRequest の 2 つのメソッド: CreateCreateHttp、HTTPS を使用する場合に異なる動作をすることです。プロトコルに従って正しいリクエストをインスタンス化するには、常にCreateメソッドを使用してください。私は同様の状況にあり、それが私が持っているものです。次のコードでは、WebRequestを使用してコンテンツを取得しようとすると、 Not Found例外が発生します。

HttpWebRequest request = WebRequest.CreateHttp(uri); 

しかし、次の部分はうまく機能します。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
于 2012-06-15T09:37:21.207 に答える
0

わかりました、私はこの問題を解決する方法を見つけました。私の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

于 2010-06-15T08:50:43.383 に答える