我目前正在重写旧版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'.
我错过了什么?是否有任何特殊配置,任何特殊设置,等等?
答案 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中保持汇编(以获得完全信任)并指定完全限定名称。