2011-02-17 3 views
0

Je suis actuellement en train de réécrire une application SharePoint héritée et j'ai besoin de savoir comment la déployer.
L'application elle-même est une solution SharePoint avec plusieurs fonctionnalités, y compris des webparts et des pages web simples avec du code.Déploiement de l'assemblage ASP .NET de mise en page SharePoint dans GAC

Une page Web est conçue pour être déployée dans le sous-dossier layouts.
Dans l'environnement de production, il n'y a pas de sous-répertoire dans le sous-répertoire layouts, juste le fichier .aspx.

Je comprends que l'assembly codebehind correspondant est chargé à partir de GAC. En effet, il est là.
Toutefois, le code de la page ne contient pas <%@ Assembly %> directive qui lui demanderait regarder dans GAC, et ne précise pas 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 Localiser son assemblage de code dans l'environnement de production ? je dois déployer le même code à un autre serveur mais si je ne précise pas <%@ Assembly %> SharePoint me donne erreur inconnue, qui est représenté dans les journaux comme suit:

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

Qu'est-ce que je manque? Y at-il une config spéciale, un réglage spécial, peu importe?

Répondre

0

se sont avérés l'ensemble était dans le dossier SharePoint bin, c'est la raison pour laquelle il a été chargé sans préciser le nom complet. Cependant retirer du GAC a abouti à une autre question:

Demande d'autorisation de type « Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Version = 12.0.0.0, Culture = neutral, PublicKeyToken = 71e9bce111e9429c » a échoué

C'est drôle parce que retirer l'ensemble de GAC ou soit bin dossier le rend inutilisable (ou nécessitant une autre configuration supplémentaire que je ne cherche pas), et je ne suis pas sûr que l'on est effectivement chargé .

Je pense que je vais rester avec l'assemblage dans GAC (pour avoir une confiance totale) et en spécifiant le nom complet.

+0

Si c'est dans la corbeille, vous avez probablement besoin d'une règle CodeAccessSecurity pour l'assembly en place dans votre web.config pour cette application web (un droit PITA, tbh). –

+0

Oui, c'est exactement ce qui motive ma décision de le mettre dans GAC.C'est un code hérité et je ne veux pas perdre de temps à évaluer ce qu'il peut ou ne peut pas faire. –

+0

En fait, j'ai le même problème (MOSS 2007, application ASP.NET personnalisée sous SP LAYOUTS): http://stackoverflow.com/questions/19421286/asp-net-dll-required-in-both-gac-and- inetpub-wwwroot-bin Je n'ai aucun problème pour installer l'assemblage dans le GAC mais il est très déconcertant de devoir le laisser dans le dossier BIN. Donc, devrais-je ajouter la directive 'Inherits =' ou @Assembly? Je souhaite vraiment le sortir du dossier BIN. Veuillez nous conseiller Merci! –

0

Vous devez utiliser Inherits = avec le nom de montage complet ...

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

Cela fonctionne de cette façon. Mais ce que je n'arrive pas à comprendre est ** comment cela fonctionne-t-il en production sans directive ou attribut d'assemblage? ** –

+0

L'attribut Assembly est seulement utilisé dans les directives TagPrefix (je pensais) –

+0

http://msdn.microsoft.com/ en-us/library/d864zc1k (v = vs.71) .aspx –