さて、皆さんのほとんどは wspbuilder を使用して wsp ソリューションを構築し、展開していると思います。だからここに私の問題があります。
私は、豊富な経験のためにサードパーティの dll (Telerik for Asp.Net Ajax - Telerik.Web.UI.dll) を利用する SharePoint ソリューションに取り組んでいます。Telerik dll は一般的なアセンブリであるため、GAC ではなく Web アプリケーションの bin フォルダーにデプロイする必要があります。ここで問題が発生します。
dll が GAC フォルダーに存在する場合、WSPBuilder は自動的に dll を gac にデプロイします。bin に telerik dll をデプロイするために、フォルダー 80\bin を作成し、そこに dll をコピーしました。wsp を再度ビルドしようとした後、作成された manifest.xml を確認しました。偉大な。dll の展開先を WebApplication に変更し、wspbuilder は cas ポリシー自体を作成するのが賢明でした。
<CodeAccessSecurity>
<PolicyItem>
<PermissionSet class="NamedPermissionSet" version="1" Description="WSPBuilder generated permissionSet" Name="Telerik.Web.UI4a48967c-0673-4c67-a176-ca7c72c30c4d">
<IPermission class="PrintingPermission" version="1" Level="DefaultPrinting" />
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="SerializationFormatter" />
<IPermission class="SharePointPermission" version="1" ObjectModel="True" />
<IPermission class="EnvironmentPermission" version="1" Read="TEMP;TMP;USERNAME;OS;COMPUTERNAME" />
<IPermission class="System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Level="Minimal" />
<IPermission class="WebPartPermission" version="1" Connections="True" />
<IPermission class="FileIOPermission" version="1" Read="$AppDir$" Write="$AppDir$" Append="$AppDir$" PathDiscovery="$AppDir$" />
<IPermission class="WebPermission" version="1">
<ConnectAccess>
<URI uri="$OriginHost$" />
</ConnectAccess>
</IPermission>
<IPermission class="IsolatedStorageFilePermission" version="1" Allowed="AssemblyIsolationByUser" UserQuota="9223372036854775807" />
<IPermission class="DnsPermission" version="1" Unrestricted="true" />
<IPermission class="SmtpPermission" version="1" Access="Connect" />
<IPermission class="SqlClientPermission" version="1" Unrestricted="true" />
</PermissionSet>
<Assemblies>
<Assembly Name="Telerik.Web.UI" Version="2010.2.826.35" PublicKeyBlob="002400000480000094000000060200000024000052534131000400000100010069F31F753C891D9F7F9D1CD0B579F61977769A5A48E01247CC2481C8765613854C8DCB5101DD092D5075A7339B4E34D0C9BD417F54972C7554AE480D6B1BB17BE8C1527554644BBD352D9498B174EAFF1090A30E1F7C2C3073669CB3EFC7D9640E82049F5FDA08CA58072C14169091A0BC7092EB6DE9C2A249A3C80F7704E5CF" />
</Assemblies>
</PolicyItem>
</CodeAccessSecurity>
しかし、Wspbuilder は、SharePointPermission IPermission クラスの 4 部構成の名前を付けるほどスマートではありませんでした。しかし、CAS には実際には 4 つの部分からなる名前が必要であることを知りました。そこで、wspbuilder.exe の -CustomCAS コマンド ライン オプションを使用して、カスタム cas ポリシー ファイルを渡すことにしました。
これが私のカスタム ポリシー ファイルです。
<IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Execute" />
<IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" ObjectModel="True" UnsafeSaveOnGet="True" Unrestricted="True" />
<IPermission class="System.Security.Permissions.EnivronmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Read="UserName" />
したがって、wsp をビルドした後、manifest.xml の cas セクションはこれを読み取ります -
<CodeAccessSecurity>
<PolicyItem>
<PermissionSet class="NamedPermissionSet" version="1" Description="WSPBuilder generated permissionSet" Name="Telerik.Web.UIa2cbae96-9c52-459e-80f6-3391af7775ae">
<IPermission class="PrintingPermission" version="1" Level="DefaultPrinting" />
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="SerializationFormatter" />
<IPermission class="SharePointPermission" version="1" ObjectModel="True" />
<IPermission class="EnvironmentPermission" version="1" Read="TEMP;TMP;USERNAME;OS;COMPUTERNAME" />
<IPermission class="System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Level="Minimal" />
<IPermission class="WebPartPermission" version="1" Connections="True" />
<IPermission class="FileIOPermission" version="1" Read="$AppDir$" Write="$AppDir$" Append="$AppDir$" PathDiscovery="$AppDir$" />
<IPermission class="WebPermission" version="1">
<ConnectAccess>
<URI uri="$OriginHost$" />
</ConnectAccess>
</IPermission>
<IPermission class="IsolatedStorageFilePermission" version="1" Allowed="AssemblyIsolationByUser" UserQuota="9223372036854775807" />
<IPermission class="DnsPermission" version="1" Unrestricted="true" />
<IPermission class="SmtpPermission" version="1" Access="Connect" />
<IPermission class="SqlClientPermission" version="1" Unrestricted="true" />
<IPermission class="AspNetHostingPermission" version="1" Level="Minimal" />
<IPermission class="System.Security.Permissions.SecurityPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Flags="Execute" />
<IPermission class="Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" version="1" ObjectModel="True" UnsafeSaveOnGet="True" Unrestricted="True" />
<IPermission class="System.Security.Permissions.EnivronmentPermission, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" version="1" Read="UserName" />
</PermissionSet>
<Assemblies>
<Assembly Name="Telerik.Web.UI" Version="2010.2.826.35" PublicKeyBlob="002400000480000094000000060200000024000052534131000400000100010069F31F753C891D9F7F9D1CD0B579F61977769A5A48E01247CC2481C8765613854C8DCB5101DD092D5075A7339B4E34D0C9BD417F54972C7554AE480D6B1BB17BE8C1527554644BBD352D9498B174EAFF1090A30E1F7C2C3073669CB3EFC7D9640E82049F5FDA08CA58072C14169091A0BC7092EB6DE9C2A249A3C80F7704E5CF" />
</Assemblies>
</PolicyItem>
</CodeAccessSecurity>
wspをデプロイした後、確認しました
* the dlls going to bin
* the trust level changed to custom trust level
* custom policy file being added to config folder
しかし、ページを実行すると、次のエラーが発生します-
スクリーンショット -
エラー -
実行権限が拒否されました
スタックトレース -
スタック トレースが必要かどうか教えてください。迷惑なくらい大きいです。
dll のアセンブリ参照がないか、アプリケーション全体をチェックしました。しかし、私はそれを見つけることができませんでした。何か案は?