Исключение безопасности службы WCF, возникающее при попытке доступа к данным через LINQ to SQL - PullRequest
0 голосов
/ 15 апреля 2010

В настоящее время я только начинаю изучать 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
    }
}

1 Ответ

1 голос
/ 15 апреля 2010

Все это может быть связано с тем фактом, что ваше приложение создается из общего сетевого ресурса. Взгляните на это: http://blogs.msdn.com/shawnfa/archive/2003/06/20/57023.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...