Déploiement de l'assemblage de la disposition SharePoint ASP dans GAC
-
14-11-2019 - |
Question
Je réécrit actuellement une application Legacy SharePoint et je dois comprendre comment le déployer.
L'application elle-même est une solution SharePoint avec plusieurs fonctionnalités, notamment des webparts et des pages Web simples avec un peu de code.
Il existe une page Web conçue pour être déployée dans layouts
sous-dossier.
Dans l'environnement de production, il n'y a pas de code layouts
sous-répertoire, juste le .aspx
dossier.
Je comprends que l'assemblage CodeBehind correspondant est chargé à partir de GAC. En effet, c'est là.
Cependant, le code de la page ne contient pas <%@ Assembly %>
Directive qui lui demanderait un look dans GAC, ni ne spécifie le nom entièrement qualifié:
<%@ 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>
Alors, comment cette page localise-t-elle son assemblage de code dans l'environnement de production? J'ai besoin de déployer le même code sur un autre serveur mais si je ne spécifie pas <%@ Assembly %>
SharePoint me donne une erreur inconnue, qui est représentée dans les journaux comme suit:
Exception Type: System.Web.HttpException
Exception Message: Could not load type 'BadWolf._Default'.
Qu'est-ce que j'ai raté? Y a-t-il une configuration spéciale, un paramètre spécial, peu importe?
La solution 2
Il s'est avéré que l'assemblage était à SharePoint bin
Dossier, c'est pourquoi il a été chargé sans spécifier le nom entièrement qualifié. Cependant, le supprimer de GAC a donné un autre problème:
Demande d'autorisation de type 'Microsoft.sharePoint.Security.SharePointPermission, Microsoft.SharePoint.Securit
C'est drôle parce que retirer l'assemblage de GAC ou bin
le dossier le rend inutilisable (ou bien nécessitant une configuration supplémentaire que je ne cherche pas), Et je ne sais pas lequel est réellement chargé.
Je pense que je m'en tiendrai à garder l'assemblage dans GAC (pour avoir une pleine confiance) et spécifier le nom pleinement qualifié.
Autres conseils
Vous devez utiliser des héritage = avec le nom d'assemblage entièrement qualifié ...
Inherits="MyAssembly.MyNamespace.MyClass, MyAssembly, version=1.0.0.0, culture=neutral, publickeytoken=123456789"