【发布时间】:2011-07-14 23:16:22
【问题描述】:
- 我创建了一个具有以下类的程序集 (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 安装以下包:
安装包 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
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 安装以下包:
安装包 EFCodeFirst.SqlServerCompact
结果
本地 IIS 中的代码运行良好!
总和
显示人物
错误
当我发布网站时,在尝试显示人员时,会显示一条安全错误消息;
System.Security.SecurityException:请求失败。
总和值正常完成!
我发布了项目this地址。
点击People菜单可以看到错误!
压缩示例项目并发布在this address。
感谢您的帮助!
【问题讨论】:
-
你对sdf文件有写权限吗?
-
没有人会下载 11MB RAR 文件来调试您的问题。部分问题可能是您使用的是旧 CTP 而不是发布包 EntityFramework.SqlServerCompact
-
0.8 版(通过 Nuget 更新)参见图片:i1118.photobucket.com/albums/k610/ridermansb/Nuget.png 我删除了项目的包和 dll。点击链接下载:teste.sextaigreja.com.br/Error.SecurityExeption-min.rar我有权限和文件夹Data.sdf
标签: asp.net-mvc-3 razor ef-code-first security sql-server-ce-4