ссылка на dotnetnuke.dll из другой папки на asp.net

2

У меня есть портал dotnetnuke на сервере в /root/dnn, и я создаю приложение asp.net в С# VS2008, которое мне нужно загрузить в /root/app.

когда я развертываю свое приложение, ему необходимо ссылаться на сборку dotnetnuke.dll из /root/dnn/bin вместо/root/app/bin.

Как я могу управлять этим, не помещая файлы приложения в /root/dnn?

Я попытался установить путь автообновления, а затем после загрузки, удалив файл /root/app/bin/dotnetnuke.dll, чтобы приложение попыталось ссылаться на отсутствующую сборку в файле.. /dnn/bin/dotnetnuke.dll, но "приложение не было предварительно скомпилировано", поэтому я попытался загрузить его без предварительной компиляции, но ссылка не найдена.

Теги:
dotnetnuke
reference
assemblies

4 ответа

2

В качестве фиолетового Ant, упомянутого выше, либо

  • загрузите сборку DotNetNuke в GAC (что является затруднительным, поскольку оно не позволяет вам позже обновлять DNN XCOPY)
  • Поместите приложение в папку приложения DNN (похоже, что вы сделали)
  • Скопируйте dll DNN в папку приложения. (наиболее распространенное решение)

То, о чем вы думаете, это <probing privatePath="" /> элемент конфигурационного файла. Но я не думаю, что он доступен для использования в веб-приложениях и (согласно документации) работает только для подпапок.

<configuration>
   <runtime>
      <assemblyBinding>
         <probing privatePath="bin;bin2\subbin;bin3"/>
      </assemblyBinding>
   </runtime>
</configuration>
2

Почему бы не дать своему приложению свою копию? Это решит все проблемы...

Иными словами, почему ссылка на перекрестное приложение? Это противоречит всем механизмам безопасности IIS и ASP.NET

  • 0
    потому что эта собственная копия не используется порталом, поэтому я не могу делать с ней некоторые вещи, связанные с порталом, например (new DotNetNuke.Entities.Modules.PortalModuleBase ()). UserId.
  • 1
    Я ожидаю, что даже когда вы получите ссылку на работу, вы все равно не сможете этого сделать, так как это всего лишь библиотека и она будет загружена в ваше приложение.
Показать ещё 1 комментарий
0

Я думаю, что ваш лучший выбор с тем, что вы пытаетесь сделать, - установить DotNetNuke.dll в GAC на сервере. Я не верю, что ASP.NET/IIS разрешит доступ к любым сборкам за пределами текущей структуры папок веб-сайтов.

0

В конце концов, мне пришлось загружать файлы .aspx и .aspx.cs в папку портала и файлы bin в папке dnn bin, добавить несколько строк из моего web.config в dnn web.config и сменить запросы к базе данных записывая их из кода вместо использования объектов набора данных, то есть файлы .xsd,.xss. Мне также пришлось скопировать код из моего App_Code в мои файлы .cs перед загрузкой, потому что С# и VS не могут быть скомпилированы в dnn App_Code.

  • 0
    Самое смешное с dnn в том, что я добавил новую страницу через портал dnn и назвал ее Report. Затем я добавил IFrame на эту страницу, и файл, который я загружал в IFrame, назывался Report.aspx (из моего приложения). Сначала я не мог понять, почему моя страница не отображается в IFrame, вместо этого она рекурсивно показывает себя, пока не заметил те же имена ..: S
  • 1
    Вы можете иметь C # и VB вместе в папке App_Code, вам просто нужно добавить элемент в элемент codeSubDirectories в web.config для каталога с C #, чтобы он компилировался отдельно.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню