开发者

Deploying SharePoint layout ASP .NET assembly into GAC

开发者 https://www.devze.com 2023-02-11 12:04 出处:网络
I\'m currently rewriting a legacy SharePoint application and I need to figure out how to deploy it. The application itself is SharePoint solution with several features, including webparts and simple w

I'm currently rewriting a legacy SharePoint application and I need to figure out how to deploy it.

The application itself is SharePoint solution with several features, including webparts and simple web pages with some code.

There is a webpage that is designed to be deployed in layouts subfolder.

In production environment, there is no codebehind in layouts subdirectory, just the .aspx file.

I understand that corresponding codebehind assembly is loaded from GAC. Indeed, it is there.

However the page code doesn't contain <%@ Assembly %> d开发者_高级运维irective that would ask it look in GAC, nor does it specify fully-qualified name:

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

So how does this page locate its code assembly in the production environment? I need to deploy the same code to a different server but if I don't specify <%@ Assembly %> SharePoint gives me Unknown Error, which is represented in logs as follows:

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

What did I miss? Is there any special config, any special setting, whatever?


You need to use Inherits= with the fully qualified assembly name...

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


Turned out the assembly was in SharePoint bin folder, that's why it was loaded without specifying the fully qualified name. However removing it from GAC yielded another issue:

Request for the permission of type 'Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c' failed

This is funny because removing the assembly from either GAC or bin folder makes it unusable (or else requiring additional configuration which I seek not), and I'm not sure which one is actually being loaded.

I think I'll stick with keeping assembly in GAC (to have full trust) and specifying fully qualified name.

0

精彩评论

暂无评论...
验证码 换一张
取 消