Использование сборок, зарегистрированных в Web.Config в файлах не в корневой папке - PullRequest
0 голосов
/ 28 января 2009

Я зарегистрировал элемент управления в своем файле web.config, и .dll для элемента управления был помещен в папку Bin приложения.

    <compilation debug="true">
        <assemblies>
            <add assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
            <add assembly="RichTextEditor"/>
        </assemblies>

    </compilation>
    <pages>
        <controls>
            <add assembly="RichTextEditor" namespace="RichTextEditor" tagPrefix="cc1" />
        </controls>
    </pages>

Теперь я могу без проблем использовать этот элемент управления на страницах .aspx в корневой папке приложения. Однако некоторые страницы .aspx, в которых я хочу использовать этот элемент управления, хранятся в подпапке приложения (в данном случае это подпапка «Администратор»). Когда я пытаюсь использовать эти элементы управления на этих страницах и запускаю в режиме отладки, я получаю сообщение об ошибке:

Error   1   Unknown server tag 'cc1:RichTextEditor'.    N:\IntranetV2\admin\EditMenuItem.aspx   27  

Я уверен, что мне здесь не хватает чего-то простого, но я не могу понять, как заставить это работать, и поиск в Google, похоже, не очень помог.

UPDATE:

Ладно, я безуспешно попробовал решение Аарона, я изменил его кодовое предложение:

<add tagPrefix="cc1" tagName="RichTextEditor" src="~/Bin/RichTextEditor.dll" />

Я надеялся, что это все, что требуется, однако теперь я получаю сообщение об ошибке:

Error   1   There is no build provider registered for the extension '.dll'. You can register one in the <compilation><buildProviders> section in machine.config or web.config. Make sure is has a BuildProviderAppliesToAttribute attribute which includes the value 'Web' or 'All'.

Пожалуйста, кто-нибудь может помочь! Я знаю, что ответ на этот вопрос должен быть смехотворно простым, но я схожу с ума, пытаясь исправить это самостоятельно, и Google не помог.

Ответы [ 2 ]

2 голосов
/ 28 января 2009

Некоторое время назад у меня были похожие проблемы. Единственный способ, которым я смог заставить работать элемент управления, был примерно таким:

<add tagPrefix="cc1" tagName="RichTextEditor" src="~/controls/richtexteditor.ascx">

вместо этого:

<add assembly="RichTextEditor" namespace="RichTextEditor" tagPrefix="cc1" />

EDIT:

Поскольку вы используете двоичный файл, добавьте .dll к своему решению и добавьте ссылку на него в проект, где вы его используете. Таким образом .NET добавит .dll в вашу папку bin. Затем вернитесь к этому (и убедитесь, что пространство имен и сборка верны):

<add assembly="RichTextEditor" namespace="RichTextEditor" tagPrefix="cc1" />

Кроме того, проверьте это как справку: Совет / хитрость: Как зарегистрировать пользовательские элементы управления и пользовательские элементы управления в Web.config

1 голос
/ 28 января 2009

Определена ли папка как приложение в IIS? Это может вызвать такую ​​проблему, поскольку в этом случае IIS будет искать файл web.config (а также bin / и другие специальные файлы и папки) внутри этой подпапки.

...