将SharePoint布局ASP .NET程序集部署到GAC中

时间:2011-02-17 18:02:04

标签: asp.net sharepoint deployment gac sharepoint-feature

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

有一个网页旨在部署在layouts子文件夹中 在生产环境中,layouts子目录中没有代码隐藏,只有.aspx文件。

我了解相应的代码隐藏程序集是从GAC加载的。的确,它就在那里 但是,页面代码不包含要求它在GAC中查找的<%@ Assembly %>指令,也不指定完全限定的名称:

<%@ 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'.   

我错过了什么?是否有任何特殊配置,任何特殊设置,等等?

2 个答案:

答案 0 :(得分:0)

您需要使用Inherits =和完全限定的程序集名称...

Inherits="MyAssembly.MyNamespace.MyClass, MyAssembly, version=1.0.0.0, culture=neutral, publickeytoken=123456789"

答案 1 :(得分:0)

关闭程序集在SharePoint bin文件夹中,这就是为什么在没有指定完全限定名称的情况下加载它的原因。 但是,将其从GAC中删除会产生另一个问题:

  

请求获得类型'Microsoft.SharePoint.Security.SharePointPermission,Microsoft.SharePoint.Security,Version = 12.0.0.0,Culture = neutral,PublicKeyToken = 71e9bce111e9429c'失败的权限

这很有趣,因为从GAC或bin文件夹中删除程序集使其无法使用(或者需要我不寻求的其他配置),并且我不确定哪个实际上正在加载

我认为我会坚持在GAC中保持汇编(以获得完全信任)并指定完全限定名称。