SecurityException: запрос не выполнен. - Entity Framework Code First (Sql Compact 4) - PullRequest
1 голос
/ 15 июля 2011
  1. Я создал сборку (dll) со следующими классами:

Person.cs

[Table("People")]
public class Person
{
    [Key]
    public int ID { get; set; }
    public string Name { get; set; }

}

DataContext.cs

public class DataContext : DbContext
{
    public DbSet<Person> People { get; set; }

    public DataContext()
        : base("name=DataConnection")
    {

    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
        base.OnModelCreating(modelBuilder);
    }
}

Calc.cs

public class Calc
{
    public int Sum(int num1, int num2)
    {
        return num1 + num2;
    }
}

При использовании Nuget установлен следующий пакет:

Install-Package EFCodeFirst.SqlServerCompact

Я создал новый сайт MVC 3

Я добавил ссылку dll на ранее созданный

Я изменил следующие действия на HomeController

HomeController.cs

public ActionResult Index()
{
    ViewBag.Message = "Sample Security Error";
    return View();
}

public ActionResult Sum(int num1, int num2)
{
    ViewBag.Message = "Sample Security Error";
    return View("Index", num1 + num2);
}

Добавлен новый контроллер

PeopleController.cs

public ActionResult Index()
{
    using (var db = new DataContext())
    {
        var people = from p in db.People
                        select p;

        return View(people.ToList());
    }
}

Я изменил View/Home со следующим кодом:

Index.cshtml

@model int?
@{
    ViewBag.Title = "Home Page";
}

<h2>@ViewBag.Message</h2>
@Html.ActionLink("Sum", "Sum", new { num1 = 2, num2 = 4})
@if (Model.HasValue)
{ 
    <p>The value is: @Model.Value</p>
}
else
{ 
    <p>No value</p>
}

Новый View/People

Индекс.cshtml

@model IEnumerable<Error.SecurityException.Model.Person>
@{
    ViewBag.Title = "People";
}

<h2>@ViewBag.Title</h2>
<ul>
@foreach (var item in Model)
{
    <li>@item.Name</li>
}
</ul>

В Web.config я добавил строку подключения

<connectionStrings>
  <add name="DataConnection" connectionString="Data Source=|DataDirectory|Data.sdf;" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

App_Data, папка создала базу данных Data.sdf с тем жеструктура как класс Person.cs.

С помощью Nuget установлен следующий пакет:

Install-Package EFCodeFirst.SqlServerCompact

Result

Код в локальном IIS работал отлично!

Суммарные значения

Sum value

Показать людей

Dados do Data.sdf

Ошибка

Когда я публиковал сайт, пытаясь отобразить людей, показывалось сообщение об ошибке безопасности;

System.Security.SecurityException: Запрос не выполнен.

Суммарные значения обычно делаются!

Я опубликовал проект этот адрес.

Нажав на меню People, вы увидите ошибку!

Сжать пример проекта и опубликовать по адресу по этому адресу .

Я ценю помощь!

Ответы [ 3 ]

0 голосов
/ 19 октября 2011

Эта ошибка была исправлена ​​в версии 4.1 Entity Framework! Это была ошибка их структуры сущности CF

0 голосов
/ 18 октября 2012

Я пришел сюда в поисках исключения безопасности, которое запускалось в моем собственном приложении ASP.Net MVC.Хотя моя проблема могла не совпадать (она вызвала System.Configuration.ConfigurationPermission при запуске любой страницы, которая называлась DbContext), я нашел простое решение, которое может подойти во многих случаях.Я изменил свой web.config, добавив requirePermission = "false" в пользовательский раздел следующим образом:

  <configSections>
<section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.3.1.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />

Надеюсь, это поможет кому-то с такой же проблемой.

0 голосов
/ 18 июля 2011

Поскольку я не могу открыть ваше решение, потому что оно настроено для работы в IIS ... Можете ли вы добавить;

<trust level="Medium"/> 

В ваших локальных проектах web.config (под system.web) и запускать его локально? Вы получаете ту же ошибку? Если вы делаете, это вопрос частичного доверия!

Мэтт

...