0

誰でも次のコードを手伝ってもらえますか?

RIA Silverlight 経由でサーバーからクライアントに値を渡そうとしていますが、取得し続けNullReferenceExceptionます。

私が試みた他のすべての試みを削除し、最後の試みを投稿しました。

サーバー側コード

 namespace Web.UI.SilverlightDomainServices 
 { 
    // Implements application logic using the SilverlightDBEntities context. 
    // TODO: Add your application logic to these methods or in additional methods. 
    // TODO: Wire up authentication (Windows/ASP.NET Forms) and uncomment the following to disable anonymous access 
    // Also consider adding roles to restrict access as appropriate. 
    // [RequiresAuthentication] 
    [EnableClientAccess()] 
    public class VideoAdvertDomainService : LinqToEntitiesDomainService<SilverlightDBEntities> 
    { 
        // TODO: 
        // Consider constraining the results of your query method.  If you need additional input you can 
        // add parameters to this method or create additional query methods with different names. 
        // To support paging you will need to add ordering to the 'at_AdvertVideoAdvertisement' query. 


        string strMonthYear = DateTime.Now.ToString("MMMM-yyyy"); 

        [Invoke] 
        public List<string> GetMediaURLBasedOnMonthYear(string strMonthYear) 
        { 
            return (from p in this.ObjectContext.at_AdvertVideoAdvertisement 
                    where p.AdvertMediaMonthYear == strMonthYear 
                    select p.AdvertMediaURL).ToList(); 
        } 

        public IQueryable<at_AdvertVideoAdvertisement> GetAt_AdvertVideoAdvertisement() 
        { 
            return this.ObjectContext.at_AdvertVideoAdvertisement; 
        } 
    } 
} 

クライアント側コード

namespace Web.Silverlight  
{  
    public partial class MainPage : UserControl  
    {  
        public MainPage()  
        {  
            InitializeComponent();  
            Loaded += new RoutedEventHandler(MainPage_Loaded);  
        }  

        private VideoAdvertDomainContext ctx = new VideoAdvertDomainContext();  

        private void MainPage_Loaded(object sender, RoutedEventArgs e)  
        {  
            string strMonthYear = DateTime.Now.ToString("MMMM-yyyy");  

            VideoAdvertDomainContext DomainContext = new VideoAdvertDomainContext();  
            InvokeOperation iv = DomainContext.GetMediaURLBasedOnMonthYear("September-2012");  
            iv.Value.ToString();  
            PlaylistItem item = new PlaylistItem();  
            item.MediaSource = new Uri(iv.Value.ToString());  
            item.DeliveryMethod = Microsoft.SilverlightMediaFramework.Plugins.Primitives.DeliveryMethods.AdaptiveStreaming;  
            MP.Playlist.Add(item);  

        }
    }
}
4

1 に答える 1

0

例外からのスタックトレースを見ずに、私は推測する必要があります。

可能性1

それはそうかもしれませんObjectContextnullそしてそれ故に、この行はあなたが得ている例外を投げます。

return (from p in this.ObjectContext.at_AdvertVideoAdvertisement 
        where p.AdvertMediaMonthYear == strMonthYear 
        select p.AdvertMediaURL).ToList();

可能性2

内容がである可能性はありthis.ObjectContext.at_AdvertVideoAdvertisementますnullか?

その場合、であるp可能性がありますnull。これにより、クエリで例外がスローされます。

可能性3

問題のある行は次のとおりです。

iv.Value.ToString();

この行は何もしませんが、有用なコンテキストで後でこれを数行繰り返すので、おそらく最初の宣言は間違いです。InvokeOperationただし、これは、によって返される値がでVideoAdvertDomainContext.GetMediaURLBasedOnMonthYearはなくnull、そのValueプロパティがではないことを前提としていnullます。これは当てはまらない場合があります。

おすすめ

これらの行にブレークポイントを設定し、デバッガーで変数がどのように表示されるかを確認して、null参照を追跡することをお勧めします。そこから、なぜそうnullなのかを解明し、そうでないようにするか、参照に適切に対処するようにコードを修正することができますnull

于 2012-09-12T12:47:42.240 に答える