2010-04-15 60 views
0

我目前在學習WCF的開始,因爲它們提供的一些概念和功能看起來很有趣,而且在我承擔的項目中也很有用。當嘗試通過LINQ to SQL訪問數據時導致WCF服務安全異常

到目前爲止,我一直在關注一些非常簡單的指南,以獲得它的竅門,但是在創建我的第一個主機服務之後,我試圖從SQL數據庫中檢索一些數據並接收以下內容後,而使用LINQ to SQL錯誤:

Request for the permission of type 'System.Data.SqlClient.SqlClientPermission, System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed. 

我周圍有一看,看到了一些建議,如何解決這個問題,但非有似乎爲我創建一個簡單的WCF服務庫純粹是爲了要適用測試。

代碼跳閘了以下線路:

me = aDb.Messages.ToList(); 

項目本身被保持在遠程驅動器上,但是當我運行調試在本地運行,但是數據庫是位於再次遠程測試服務器。所有的SQL憑據都是正確的,因爲連接測試成功,我檢查了連接字符串。最後,該服務作爲一個基本的Http運行下面你可以看到我的所有代碼,所以如果你有任何想法可以阻止這個錯誤,我們將不勝感激。

namespace AnnouncementServiceLibrary 
{ 
    [ServiceContract] 
    public interface IConnect 
    { 
     [OperationContract] 
     List<Mess> ConnectUser(string userId); 
    } 
} 

namespace AnnouncementServiceLibrary 
{ 
    public class AnnounceService : IAnnounceService 
    { 
#region IConnect Members 

     public List<Mess> ConnectUser(string userId) 
     { 
       List<Mess> mess = new List<Mess>(); 
       List<Message> me; 
       List<MessageLink> messLink; 

       AnnouncementDBDataContext aDb = new AnnouncementDBDataContext(); 

       me = aDb.Messages.ToList(); 
       messLink = aDb.MessageLinks.ToList(); 

       var result = (from a in messLink 
           join b in me 
            on a.UniqueID equals b.UniqueID 
           where a.UserID == userId 
           select new { b.UniqueID, b.Author, b.Title, b.Body, b.Priority, a.Read, b.TimeRecieved }). 
        DefaultIfEmpty(); 

       foreach (var a in result) 
       { 
        mess.Add(new Mess(a.UniqueID, a.Author, a.Title, a.Body, a.Priority, (bool)a.Read, a.TimeRecieved)); 
       } 
       return mess; 
     } 
     #endregion 
    } 
} 

回答