Другое событие NullPointerException
возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.
String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals
для гарантированного непустого объекта.
Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null
.
Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.
String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
System.out.println(phrase.equals(keyPhrase));
}
Вызов Render
метод все еще довольно прост. Просто создайте экземпляр своей страницы, создайте тупик WebContext
наряду с WebRequest
объект и вызов Render
метод страницы. Вы затем свободны сделать независимо от того, что Вы хотите с результатами.
С другой стороны, запишите немного curl
или wget
сценарий, чтобы загрузить и сохранить, какой бы ни страницы Вы хотите сделать статичным.
Вы могли использовать wget (инструмент командной строки), чтобы рекурсивно запросить каждую страницу и сохранить их в файлы HTML. Это обновило бы все необходимые ссылки в получающемся HTML к ссылке .html файлы вместо .aspx. Таким образом, можно кодировать весь сайт, как будто Вы использовали сгенерированные сервером страницы (легче протестировать) и затем преобразовать его в статические страницы.
При необходимости в статическом HTML по причинам производительности только мое предпочтение состояло бы в том, чтобы использовать кэширование вывода ASP.NET.
Я рекомендую, чтобы Вы сделали это очень простой путь и не делали этого в коде. Это позволит Вашему коду CMS делать то, что код CMS должен сделать и сохранит его максимально простым.
Используйте продукт, такой как HTTrack. Это называет себя "копировальным устройством веб-сайта". Это проверяет сайт и создает вывод HTML. Это быстро и свободно. У Вас может просто быть выполненный на любой частоте, Вы думаете, является лучшим.
Это отделяет Ваши потребности вывода HTML от Вашей разработки и реализации CMS. Это уменьшает сложность и дает Вам некоторую гибкость в том, как Вы производите HTML, не представляя места ошибки в Вашем коде CMS.
@ckarras: Я не использовал бы внешний инструмент, потому что я хочу, чтобы страницы HTML были созданы программно и не вручную.
@jttraino: у Меня нет временного интервала, в котором сайт должен быть произведен - uotput должен произойти, когда пользователь создает новый сайт.
@Frank Krueger: Я действительно не понимаю, как создать экземпляр моего использования страницы WebContext и WebRequest.
Я искал "wget" в searchdotnet и добрался до сообщения о классе .NET под названием WebClient. Это, кажется, делает то, что я хочу, если я использую DownloadString (), метод - получает строку от определенного URL. Проблема состоит в том, что, потому что наш CMS должен быть зарегистрирован к, когда метод пытается достигнуть страницы, это брошено в страницу входа в систему и поэтому возвращает login.aspx HTML...
Какие-либо мысли относительно того, как я могу продолжить отсюда?
Я, кажется, нашел решение для своего problemby использованием Сервера. Метод Ecxcute.
Я нашел статью что demonstared использование его:
TextWriter textWriter = new StringWriter();
Server.Execute("myOtherPage.aspx", textWriter);
Затем я делаю несколько maniulatons на авторе учебника и вставляю его в файл HTML. И вуаля!Работает!