Если код вывода ссылок стоит внутри UserControl какого-нибудь, то получается что мой UserControl рендерит ваш, поэтому события OnInit и OnLoad не вызываются - как результат Null Reference Exception.
Для проверки: default.aspx <%@ Page Language="C#" AutoEventWireup="false" %> <% System.Text.StringBuilder sb = new System.Text.StringBuilder(); System.IO.StringWriter tw = new System.IO.StringWriter(sb); System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw); System.Web.UI.Control ctrl = Page.LoadControl("control.ascx"); ctrl.RenderControl(hw); Response.Write(sb.ToString()); %> control.ascx содержит код показа ссылок: <%@ Control Language="C#" AutoEventWireup="false" %> <efe:SapeLinks ID="SapeLinks1" runat="server"/> Сделал костыль в SapeLinks.cs вида ... private bool _initizlized=false; private bool _loaded = false; ... protected override void OnInit(EventArgs e) { _initizlized = true; ... protected override void OnLoad(EventArgs e) { _loaded = true; ... protected override void Render(HtmlTextWriter writer) { if (!_initizlized) OnInit(null); if (!_loaded) OnLoad(null); ... |
Приветствую, fearg0.
Согласно классическому стилю реализации вы неправильно унаследовали методы-обработчики событий. Вы можете или унаследовать их правильно: Код:
protected override void OnInit(EventArgs e) |
Вот такая вот ошибка сегодня возникла (код новый версии 0.5):
[ArgumentNullException: Значение не может быть неопределенным. Parameter name: key] System.ThrowHelper.ThrowArgumentNullException(Exce ptionArgument argument) +44 System.Collections.Generic.Dictionary`2.FindEntry( TKey key) +7457569 System.Collections.Generic.Dictionary`2.get_Item(T Key key) +12 effetto.Sape.RussianNormalizer.GetFixedUrl(String url) +571 effetto.Sape.SapeUrl..ctor(String rawUrl, String getParams) +55 effetto.Sape.SapeControl.OnInit(EventArgs e) +221 effetto.Sape.SapeLinks.OnInit(EventArgs e) +15 System.Web.UI.Control.InitRecursive(Control namingContainer) +333 System.Web.UI.Control.InitRecursive(Control namingContainer) +210 System.Web.UI.Control.InitRecursive(Control namingContainer) +210 System.Web.UI.Control.InitRecursive(Control namingContainer) +210 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378 |
Попробовал удалить файл sape.bin, вот что теперь выводит (сам файл создался автоматом снова):
Server Error in '/' Application. Данный ключ отсутствует в словаре. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Collections.Generic.KeyNotFoundException: Данный ключ отсутствует в словаре. Source Error: An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. Stack Trace: [KeyNotFoundException: Данный ключ отсутствует в словаре.] System.ThrowHelper.ThrowKeyNotFoundException() +28 System.Collections.Generic.Dictionary`2.get_Item(T Key key) +7455948 effetto.Sape.RussianNormalizer.GetFixedXML(String url) +195 effetto.Sape.SapeFactory.RequestHostFromDispenser( SapeUser user, String hostname) +472 effetto.Sape.SapeFactory.GetHost(SapeUser user, String host) +421 effetto.Sape.SapeControl.OnInit(EventArgs e) +137 effetto.Sape.SapeLinks.OnInit(EventArgs e) +15 System.Web.UI.Control.InitRecursive(Control namingContainer) +333 System.Web.UI.Control.InitRecursive(Control namingContainer) +210 System.Web.UI.Control.InitRecursive(Control namingContainer) +210 System.Web.UI.Control.InitRecursive(Control namingContainer) +210 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378 Version Information: Microsoft .NET Framework Version:2.0.50727.4952; ASP.NET Version:2.0.50727.4927 |
Товарищи, помогите всё-таки разобраться, ошибка повторяется.
|
На странице выдается
Код:
<!--check code--> При переводе флага CacheInSQL="false" в true - вылезает ошибка. Походу табла dbo.sape не создалась, в исходниках есть dc.dbml - там похожая, вручную создавать?? (давайте код таблички) Код:
<?xml version="1.0" encoding="windows-1251" ?> Код:
Server Error in '/' Application. Создал табличку: Код:
create table [dbo].sape( В таблу занеслась одна строка с кодом и байтами, в app_data пусто. На странице все-равно вылазиить только код: Код:
<!--check code--> На странице установлен: Код:
<efe:SapeLinks runat="server"/> Добавлено через 3 минуты Занес Host="my_domain.ru" - все равно пусто |
2lurii: Сайт в сапу добавился? модерацию прошел? ссылки есть? если сылок нет, то вывод и должен быть пустым или только чек код.
Добавлено через 1 минуту 2 SerZH: отправил модуль на тестирование, так как такую ошибку наши ребята уже исправляли. Ошибка повяляется часто? можете выслать бинарник данных? |
Цитата:
2) Почему автоматом не создалась таблица? - нет проверки ее существования или просто не обернуто в исключение? 3) Может сделать флаг debug который бы выводил текущую операцию и статус ее успешной обработки? - в конце типа ОК - все в норме. 4) Урлы и их ссылки хранятся в бинарнике и будут нагружать память при каждом обращении к странице? |
1) никакого или чек код, если он включен;
2) автоматом она не создается, таблица примитивная а используют этот метод единицы, создайте если нужна, в документации все описано; 3) все и так ок, если вы видете чек код, для этого он и создан; 4) урлы и ссылки хранятся в одном экземпляре для всех страниц, тестирование показало, что для высоко и среждне нагруженых ресурсов эти жертвы ничто по сравнению с затратами на чтение из файла, если данные в памяти не хранить. |
Вопрос по размещению одной ссылки, но в разных местах страницы.
Место вывода рассчитывается: int ban_pos=ban_pos_calc(2,re("id")); и далее на странице должно выводится в одной из позиций конструкцией: if(ban_pos==1){%><!--#include virtual="/sape.aspx"--><br /><%}; ... if(ban_pos==2){%><!--#include virtual="/sape.aspx"--><br /><%}; Соответственно выводится только баннер с позицией 1, т.е. приоритет вывода одинаковый и вторая позиция всегда в пролете ... а инклуды отрабатывают оба ... (даааа, это не php) Как поступить? (ссылка на странице одна, но должна выводиться в разных местах) Добавлено через 16 часов 55 минут доперло, ставлю в нужном месте: <%Response.Write(SapeFactory.Factory.GetUser().Get Host().GetPageOrDefault().GetLinksAsString());%> теперь ссылка выводится по рандому |
Часовой пояс GMT +3, время: 14:29. |
Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.