0

我目前正在重写一个旧的 SharePoint 应用程序,我需要弄清楚如何部署它。
该应用程序本身是具有多种功能的 SharePoint 解决方案,包括 Web 部件和带有一些代码的简单网页。

有一个网页设计为部署在layouts子文件夹中。在生产环境中,子目录
中没有代码隐藏,只有文件。 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 回答