0

現在、従来の SharePoint アプリケーションを書き直していて、それを展開する方法を理解する必要があります。
アプリケーション自体は、Web パーツやいくつかのコードを含む単純な Web ページなど、いくつかの機能を備えた SharePoint ソリューションです。

layoutsサブフォルダーに展開するように設計された Web ページがあります。
運用環境では、layoutsサブディレクトリにコードビハインドはなく、.aspxファイルだけです。

対応する分離コード アセンブリが GAC から読み込まれることを理解しています。確かに、それはそこにあります。
ただし、ページ コードには<%@ Assembly %>、GAC での検索を要求するディレクティブが含まれておらず、完全修飾名も指定されていません。

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="BadWolf._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <!-- -->
</html>

では、このページは、運用環境でコード アセンブリをどのように見つけているのでしょうか。<%@ Assembly %>同じコードを別のサーバーに展開する必要がありますが、 SharePoint を指定しないと、ログに次のように表示される不明なエラーが表示されます。

Exception Type: System.Web.HttpException
Exception Message: Could not load type 'BadWolf._Default'.   

私は何を取りこぼしたか?特別な構成、特別な設定などはありますか?

4

2 に答える 2

0

完全修飾アセンブリ名で Inherits= を使用する必要があります...

Inherits="MyAssembly.MyNamespace.MyClass, MyAssembly, version=1.0.0.0, culture=neutral, publickeytoken=123456789"
于 2011-02-17T18:12:37.327 に答える
0

アセンブリが SharePointbinフォルダーにあることが判明したため、完全修飾名を指定せずに読み込まれました。ただし、GAC から削除すると、別の問題が発生しました。

タイプ 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' のアクセス許可の要求に失敗しました

GACまたはbinフォルダーからアセンブリを削除すると使用できなくなり(または、私が求めていない追加の構成が必要になるため)、実際にロードされているものがわからないため、これは面白いです。

アセンブリを GAC に保持し (完全な信頼を得るために)、完全修飾名を指定することに固執すると思います。

于 2011-02-17T18:34:04.563 に答える