В настоящее время я только начинаю изучать 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 верны, так как соединение успешно тестируется, и я проверил строку соединения.Наконец, служба работает как базовая. Ниже вы можете увидеть весь мой код, поэтому, если у вас есть какие-либо идеи относительно того, как я могу остановить ошибку, это будет оценено.
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
}
}