2011-01-11 8 views
2

これを説明する方法は完全にはわかりませんが、基本的に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

私はちょうど別のデータとコードの同じビットを試してみた、それが正常に動作します。私はそれがデータのサイズ(最初の試みは非常に大きなデータである)であるのか疑問に思っていましたが、コールがコントローラにヒットした場合にどうして重要なのか理解できません。

+0

InnerExceptionはありますか? – VoodooChild

+0

はい、同じメッセージを持つ別のWebExceptionです。 –

+0

Fiddler(または同様のもの)を使用して、実際のメッセージの内容を確認できますか? –

答えて

1

あなたは本当のサーバ側の例外を確認したい場合は、これはあなたを助けることがあります。

http://msdn.microsoft.com/en-us/library/ee844556(v=VS.95).aspx

どちらのアプローチは、おそらく本当の問題が照らすでしょう説明しました。

+0

乾杯。私は現時点で取り組んでいるプロジェクトの別の部分に移動したので、私は現在この問題に取り組んでいません。そういうわけで、私はこの問題に戻るまでこの記事を開いたままにします。その時点で、私は今まで提供されたリンクを調べます。 –

関連する問題