1
  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を使用して、次のパッケージをインストールしました。

インストールパッケージEFCodeFirst.SqlServerCompact

  1. 新しいサイトMVC3を作成しました

以前に作成した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のコードは完全に機能しました!

合計値

合計値

展示者

Dados do Data.sdf

エラー

サイトを公開したときに、人物を表示しようとすると、セキュリティエラーメッセージが表示されます。

System.Security.SecurityException:リクエストが失敗しました。

合計値は通常行われます!

このアドレスでプロジェクトを公開しました。

メニューをクリックするとPeople、エラーが表示されます。

サンプルプロジェクトを圧縮し、このアドレスで公開します。

私は助けに感謝します!

4

3 に答える 3

0

IISで実行するように構成されているため、ソリューションを開くことができないため...追加できますか。

<trust level="Medium"/> 

ローカルプロジェクトweb.config(system.webの下)でローカルで実行しますか?同じエラーが発生しますか?もしそうなら、それは部分的な信頼の問題です!

マット

于 2011-07-18T14:08:19.100 に答える
0

このエラーは、EntityFrameworkのバージョン4.1で修正されました。それは彼らのエンティティフレームワークCFのバグでした

于 2011-10-19T17:57:45.947 に答える
0

自分のASP.NetMVCアプリケーションで発生していたセキュリティ例外を探してここに来ました。私の問題はまったく同じではないかもしれませんが(DbContextを呼び出すページを実行するときにSystem.Configuration.ConfigurationPermissionを発生させていました)、多くの場合に適した簡単な解決策を見つけました。次のように、カスタムセクションにrequirePermission = "false"を追加して、web.configを変更しました。

  <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 に答える