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?

Était-ce utile?

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"
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top