これを説明する方法は完全にはわかりませんが、基本的にASP.NET MVCアプリケーションでホストされているSilverlightアプリケーションを使用しようとしています。私はいくつかの文字列パラメータを受け取り、ActionResultを返すメソッドを含むMVC側の基本的なコントローラを持っています(このプログラムの目的のために、結果はいくつかのJsonデータです)。ASP.NET MVCでSilverlightを使用するとWebException NotFoundが発生する
Silverlightコントロール内でWebClient.OpenReadCompletedイベントを処理すると、私の問題が発生します。このコントロール内でWebClient.OpenReadAsyncメソッドが呼び出されると、正常にコントローラーに到達してから、期待どおりに関連するイベントハンドラーに報告されます。ただし、処理されると、イベント引数に「リモートサーバーからエラーが返されました:NotFound」というエラーが表示されます。
以前は、私の通信URLの一部が間違っている場合に発生していることに気付きました。この場合はそうではありません。いくつかのグーグルでは、これも一般的なエラーであることに気付きました。そういうわけで、私はむしろ困惑しています。問題をもっと混乱させるために、プログラムの別の部分でこのまったく同じ通信の試みを行い、文字列の配列を取得します。これは完全にうまく動作します。
下記のサンプルコードを参照してください(このプログラムの性質上、完全なコードを投稿することができません)。
Silverlightコントロール
WebClient mClient = new WebClient();
public void RequestData()
{
mClient.OpenReadAsync(new Uri("http://localhost:51234/Home/GetData"));
mClient.OpenReadCompleted += new OpenReadCompletedEventHandler(mClient_OpenReadCompleted);
}
private void mClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
if(!e.Cancelled && e.Error == null) // <-- e.Error here is a WebException
{
var serializer = new DataContractJsonSerializer(typeof(Data));
Data data = (Data)serializer.ReadObject(e.Result);
}
}
MVCコントローラ - にHomeControllerという名前と "ホーム" ここ
public ActionResult GetData()
{
return Json(new Data(), JsonRequestBehaviour.AllowGet);
}
注 でアクセス、データはタイプの3人のメンバーが含まれています。文字列、文字列、およびバイト配列。シリアライゼーションの目的で、getとsetの両方の部分を含むpublicプロパティを使用して3人のメンバーすべてを公開しました。私は引数を取らないpublicコンストラクタも追加しました。
これに関するアドバイスをいただければ幸いです。
事前に感謝します。
UPDATE
私はちょうど別のデータとコードの同じビットを試してみた、それが正常に動作します。私はそれがデータのサイズ(最初の試みは非常に大きなデータである)であるのか疑問に思っていましたが、コールがコントローラにヒットした場合にどうして重要なのか理解できません。
InnerExceptionはありますか? – VoodooChild
はい、同じメッセージを持つ別のWebExceptionです。 –
Fiddler(または同様のもの)を使用して、実際のメッセージの内容を確認できますか? –