Удаленная база кодов

У меня есть длл. Эта DLL загружена на сервер. Я хочу, чтобы каждый раз, когда приложение начинало получать "последнюю" dll с сервера, я использовал следующий код в моем app.config. Почему это не работает?

вот файл app.config:

<configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="ReflectionTest"
            publicKeyToken="f94c9b9f0707ee96"
                culture="neutral" />
            <codeBase version="1.0.0.0"                   
                href="http://127.0.0.1/ReflectionTest.dll"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>
</configuration>

2 ответа

Решение

Во-первых, вы можете ошибиться. Даже если вы не изменили версию, ваше приложение может использовать более старую копию сборки.

Предполагая действительный URI в вашем <codebase> элемент, когда ваше приложение запускается в первый раз, среда выполнения не найдет сборку, пока не прощупает вашу кодовую базу. Затем он загрузит сборку в GAC. Когда ваше приложение запустится снова, среда выполнения найдет эту сборку в GAC, поэтому ей не нужно будет проверять ее.

Вместо того, чтобы использовать <codebase>рассмотрите использование отражения. В частности, вы можете использовать Assembly.LoadFrom(assemblyUri) в вашем приложении, получая URI из настроек приложения. Оттуда вы будете создавать объекты, используя Reflection API, особенно используя Activator.CreateInstance<T>(),

Что касается получения этой сборки с вашего сервера, убедитесь, что ваша DLL находится в правильном месте, и что ваш веб-сервер работает и правильно настроен.

Ваш.dll действительно доступен в этом месте? Вы предлагаете это через какое-то веб-приложение?

Если вы введете этот URL-адрес в веб-браузер, он позволит вам загрузить или открыть этот файл?

Другие вопросы по тегам