Развертывание компоновки ASP. Сборка ASP .NET в GAC - PullRequest
0 голосов
/ 17 февраля 2011

В настоящее время я переписываю устаревшее приложение SharePoint, и мне нужно выяснить, как его развернуть.
Само приложение представляет собой решение SharePoint с несколькими функциями, включая веб-части и простые веб-страницы с некоторым кодом.

Существует веб-страница, предназначенная для развертывания в подпапке layouts.
В производственной среде нет никакого кода позади подкаталога layouts, только файл .aspx.

Я понимаю, что соответствующая сборка кода загружается из GAC. Действительно, это там.
Однако код страницы не содержит директивы <%@ Assembly %>, которая бы запрашивала его поиск в GAC, а также не указывает полностью определенное имя:

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

Что я пропустил? Есть ли какие-то особые настройки, какие-то особые настройки?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2011

Оказалось, что сборка была в папке SharePoint bin, поэтому она была загружена без указания полного имени. Однако удаление его из GAC привело к другой проблеме:

Запрос на разрешение типа «Microsoft.SharePoint.Security.SharePointPermission, Microsoft.SharePoint.Security, Версия = 12.0.0.0, Культура = нейтральный, PublicKeyToken = 71e9bce111e9429c» не выполнен

Это забавно, потому что удаление сборки из папки GAC или bin делает ее непригодной для использования (или требует дополнительной конфигурации, которую я не ищу), и я не уверен, какая из них на самом деле загружается.

Я думаю, что я буду придерживаться сохранения сборки в GAC (чтобы иметь полное доверие) и указывать полное имя.

0 голосов
/ 17 февраля 2011

Вам необходимо использовать Inherits = с полным именем сборки ...

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