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
我添加了对之前创建的
的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
Index.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
结果
本地IIS中的代码运行良好!
总和值
展示人员
错误
当我发布网站时,在尝试显示人员时,会显示安全错误消息;
System.Security.SecurityException:请求失败。
总和值通常都已完成!
我发布了项目this地址。
点击People
菜单,您会看到错误!
压缩示例项目并发布在this address。
我很感激帮助!
答案 0 :(得分:0)
由于我无法打开您的解决方案,因为它已配置为在IIS中运行...您可以添加;
<trust level="Medium"/>
在您的本地项目web.config(在system.web下)并在本地运行它?你得到同样的错误吗?如果你这样做,那就是部分信任问题!
马特
答案 1 :(得分:0)
此错误已在实体框架的4.1版中修复! 这是他们的实体框架CF的错误
答案 2 :(得分: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" />
希望这可以帮助有同样问题的人。