1
  1. 我创建了一个包含以下类的程序集(dll) :

个人.cs

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

}

数据上下文.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);
    }
}

计算器

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

使用 Nuget 安装了以下软件包:

安装包 EFCodeFirst.SqlServerCompact

  1. 我创建了一个新站点 MVC 3

我添加了对先前创建的 dll 引用

我修改了以下操作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);
}

添加了一个新的控制器

人控制器.cs

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

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

View/Home我用以下代码更改了:

索引.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 安装了以下软件包:

安装包 EFCodeFirst.SqlServerCompact

结果

本地 IIS 中的代码运行良好!

总和值

总和值

显示人物

Dados 做 Data.sdf

错误

当我发布站点时,在尝试显示人员时,会显示一条安全错误消息;

System.Security.SecurityException:请求失败。

总和值通常已完成!

我在这个地址发布了项目。

点击People菜单可以看到错误!

压缩示例项目并在此地址发布。

感谢您的帮助!

4

3 回答 3

0

我来这里是为了寻找在我自己的 ASP.Net MVC 应用程序中被触发的安全异常。虽然我的问题可能不完全相同(它在运行任何调用 DbContext 的页面时引发 System.Configuration.ConfigurationPermission),但我找到了一个适用于许多情况的简单解决方案。我更改了我的 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" />

希望这可以帮助遇到同样问题的人。

于 2012-10-18T03:08:56.470 回答
0

由于我无法打开您的解决方案,因为它配置为在 IIS 中运行...您可以添加吗?

<trust level="Medium"/> 

在您的本地项目 web.config(在 system.web 下)并在本地运行它?你得到同样的错误吗?如果你这样做,它是一个部分信任问题!

马特

于 2011-07-18T14:08:19.100 回答
0

此错误已在实体框架 4.1 版中修复!这是他们的实体框架 CF 的错误

于 2011-10-19T17:57:45.947 回答