(facebooksdk.codeplex.com)FacebookSDK - 私はFacebookSDK(4.0.2)の最新バージョンを使用していAllowPartiallyTrustedCallers問題
そして私は、Srcコードはつまり、いくつかのプロジェクトで構成されて気づいた。
1)
サンプル - > Facebook.Samples.AspWebsiteプロジェクト
サンプル - > Facebook.Samples.MvcFacebookAppプロジェクト
サンプル - > Facebook.Samples.MvcWebsiteプロジェクト
2)
テスト - > Facebook.Tests
テスト - > Facebook.Web.Tests
3)
Facebookのプロジェクト
Facebook.Webプロジェクト
Facebook.Web.Mvcプロジェクト
さて、私はFacebook Canvas .Net 4.0 MVC 2アプリケーションをビルドしており、単にFacebook.Samples.MvcFacebookAを使用しています私の状況に合ったプロジェクトを作成し、クラスとファイルを置き換えて追加します。しかし、私はMicrosoft Azureクラウド上で自分のサイトが稼動するようになり、データレイヤ(データベース)をプロジェクトに抽象化したいと思っています。 > Facebook.Samples ...
1)
サンプル:だから私は今、解決策は次のようになり、先に行って、BusinessDataと呼ばれる溶液中の新しいプロジェクトを作成し、それにEntityDataModelを追加しました
2)
テスト - > Facebook.Tests ...
3)
Facebookのプロジェクト
Facebook.Webプロジェクト
Facebook.Web.Mvcプロジェクト
BusinessDataプロジェクト
- > Business.edmxグレート
は今、私は私のFacebook.SamplesにBusinessDataプロジェクトへの参照を追加します。 MvcFacebookApp Projectを開き、データベースにアクセスしてみてください。いくつかの平穏の研究の後
System.MethodAccessException occurred
Message=Attempt by security transparent method 'Facebook.Samples.MvcFacebookApp.Models.TrackUserAttribute..ctor()' to access security critical method 'BusinessData.BusinessEntities..ctor()' failed.
Assembly 'Facebook.Samples.MvcFacebookApp, Version=4.0.2.0, Culture=neutral, PublicKeyToken=null' is marked with the AllowPartiallyTrustedCallersAttribute, and uses the level 2 security transparency model. Level 2 transparency causes all methods in AllowPartiallyTrustedCallers assemblies to become security transparent by default, which may be the cause of this exception.
Source=Facebook.Samples.MvcFacebookApp
StackTrace:
at Facebook.Samples.MvcFacebookApp.Models.TrackUserAttribute..ctor() in C:\Users\rkara\Desktop\FacebookPazooza\ThuziFacebookSDK\Source\Src\Facebook.Samples.MvcFacebookApp\Models\TrackUserAttribute.cs:line 13
InnerException:
と完全にCASポリシーについて理解し、どのようにそれはASP.Net 4.0私に進化してきましたされていない。しかし、私はFacebook.Samples.MvcFacebookAppプロジェクトにおける私のTrackUserAttribute.csクラスでこのエラーが出ますFacebookSDKソリューションのすべてのプロジェクトに含まれているGlobalAssemblyInfo.csファイルには、何か関係があります。
このコード行はGlobalAssemblyInfoにあります。CSファイル:
#if !(SILVERLIGHT || TESTS)
[assembly: AllowPartiallyTrustedCallers]
#endif
が犯人であると思われます。このマイクロソフトの専門家によると:
BusinessDataはSecurityCriticalレベルの権限を持っています。私のクラスTrackUserAttribute.csにはSecurityTransparentしかないため、BusinessDataアセンブリ内のメソッドを呼び出す権限を持っていないことがあります。これは正しいです?
[assembly:AllowPartiallyTrustedCallers]をGlobalAssemblyInfo.csファイルから削除しても、この問題を解決するためにさまざまなことを試しましたが、.edmxファイル自体に別の問題があります。メタデータなので、まだ完全な信頼特権などと関係があると思います。
私は確かにこれに簡単な答えがあります。このSDKラッパーを開発した人は、個人のニーズに合わせてSDKを拡張します。
データの抽象化を保証するための最良の方法と、提供するプロジェクトに結びつけることなく抽象化したいものは何ですか?
今のところ、開発を続けて、これであまり長く縛られないように、私は自分のエンティティモデル(edmx)をFacebook.Samples.MvcFacebookAppのmodelsフォルダに保存しました。これは今のところ機能しますが、私はむしろ独自のプロジェクトにedmxを格納しています。
乾杯 ロブ