2008-11-07 6 views
0

Я разрабатываю небольшой веб-сайт ASP.NET для онлайн-покупок, проверяя его в Visual Studio, все работает нормально, однако это уже не так, когда я развертываю его в IIS ,При развертывании приложения ASP.NET при развертывании в IIS

Проблема, кажется, в DLL-файле, который я ссылаюсь, этот DLL-файл содержит классы, которые мне нужно инициализировать и отправлять запросы запроса на другой сервер, на котором есть вся информация о продукте. Эта DLL была первоначально Jar-файлом, который я преобразовал в DLL с помощью IKVM.

Когда я развернуть приложение на IIS, любую страницу, которая пытается создать объект, определенный в этой DLL не удается с нулевой ссылки, например:

Fulfiller fulfiller = new Fulfiller(); 
string result = fulfiller.initialize("host", port, "user", "pass"); 

возвращает эту ошибку:

System.NullReferenceException : Object reference not set to an instance of an object. at Fulfiller.toLog(String) at Fulfiller.initialize(String str1, Int32 i, String str2, String str3) at Orders.createDataSource()

Теперь это отлично работает на сервере разработки VS, но ломается в IIS, и я не знаю почему. Это какая-то проблема с кодированием, когда DLL не загружается должным образом при работе в IIS? или это проблема с IIS может быть блокирование DLL от исполнения или отправки запросов, я очень отчаянный, чтобы решить эту проблему

благодаря

ответ

0

Что fulfiller.Initialize() делает? Можете ли вы опубликовать этот код?

Очевидно, что у вас есть ссылка на выполнение, потому что вы не можете передать конструктор без ошибок, а затем указать null-ref.

3

Обычно, когда что-то, что работает на dev sever, не работает на IIS, проблема заключается в авторизации (VS-сервер работает под вашими учетными данными, но IIS работает как «Сетевая служба» или другой системный пользователь).

Например, я вижу, что ваш код разбивается на executeer.toLog().

Может ли быть то, что функция toLog() пытается открыть файл журнала и что пользователь, которому принадлежит IIS, не имеет права читать или писать?

0

Ответы второго Лориса.

У вашего сервера-разработчика есть ваши права. Предполагая, что вы развертываетесь на Windows Server или на любой машине с Active Directory, вы должны щелкнуть правой кнопкой мыши по каталогу, в котором хранятся файлы журнала, и выбрать свойства. В диалоговом окне появится вкладка «Безопасность». Если пользователь сетевой службы (или IUSR_machinename) не отображается, вам придется добавить их в список. Выберите пользователя и назначьте права на чтение и запись.

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

0

Я не использовал IKVM, но я уверен, что на сервере должно быть установлено некоторое время выполнения IKVM. Вы проверили IKVM на сервере?

Надеюсь, это поможет.

Смежные вопросы