Вернуться   Форум SAPE.RU > Система SAPE.ru > Установка кода на различные движки

-->
Ответ
 
Опции темы
Старый 28.08.2010, 17:47   #181
Новичок
 
Регистрация: 15.03.2007
Сообщений: 5
Вес репутации: 0
fearg0 на пути к лучшему
По умолчанию

Если код вывода ссылок стоит внутри 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 вне форума   Ответить с цитированием
Старый 28.08.2010, 17:53   #182
Новичок
 
Аватар для effetto
 
Регистрация: 26.01.2009
Адрес: Красноярск
Сообщений: 93
Вес репутации: 188
effetto - весьма и весьма положительная личностьeffetto - весьма и весьма положительная личность
По умолчанию

Приветствую, fearg0.

Согласно классическому стилю реализации вы неправильно унаследовали методы-обработчики событий. Вы можете или унаследовать их правильно:
Код:
        protected override void OnInit(EventArgs e)
        {
            _initizlized = true;
            base.OnInit(e);
        }
Или, если ваша реализация принципиально должна быть таковой, можете использовать вывод ссылок посредством кода. Инструкция об этом процессе есть в документация, а ссылка на документацию - в первом сообщении темы.
effetto вне форума   Ответить с цитированием
Старый 04.09.2010, 18:47   #183
Новичок
 
Регистрация: 15.11.2009
Сообщений: 8
Вес репутации: 0
SerZH на пути к лучшему
По умолчанию

Вот такая вот ошибка сегодня возникла (код новый версии 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
SerZH вне форума   Ответить с цитированием
Старый 05.09.2010, 22:44   #184
Новичок
 
Регистрация: 15.11.2009
Сообщений: 8
Вес репутации: 0
SerZH на пути к лучшему
По умолчанию

Попробовал удалить файл 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
SerZH вне форума   Ответить с цитированием
Старый 24.09.2010, 22:53   #185
Новичок
 
Регистрация: 15.11.2009
Сообщений: 8
Вес репутации: 0
SerZH на пути к лучшему
По умолчанию

Товарищи, помогите всё-таки разобраться, ошибка повторяется.
SerZH вне форума   Ответить с цитированием
Старый 25.09.2010, 05:43   #186
Новичок
 
Регистрация: 24.09.2010
Сообщений: 19
Вес репутации: 0
lurii на пути к лучшему
По умолчанию

На странице выдается
Код:
<!--check code-->
В app_data лежит непустой sape.bin, при удалении создается.
При переводе флага CacheInSQL="false" в true - вылезает ошибка.
Походу табла dbo.sape не создалась, в исходниках есть dc.dbml - там похожая, вручную создавать?? (давайте код таблички)

Код:
<?xml version="1.0" encoding="windows-1251" ?>
<!-- SERVER -->
<configuration>

	<!-- sape -->
	<configSections>
		<sectionGroup name="effetto.Sape">
			<section name="SapeConfig"
				type="effetto.Sape.SapeConfigSection, SAPE"
				allowLocation="true"
				requirePermission="false" 
				allowDefinition="Everywhere"/>
		</sectionGroup>
	</configSections>
	<connectionStrings>
      <add
      name="SapeConnectionString"
      connectionString="
      	data source=db_srv;
      	database=db_name;
      	User ID=db_log;
      	Password=db_pwd;
      	"/>
	</connectionStrings>
	<effetto.Sape>
		<SapeConfig UserId="uid"
			CacheTimeout="60"
			CacheInSQL="false"
			ConnectionStringName="SapeConnectionString"
			SystemId="47474747-4747-4747-4747-474747474747"
			ExpireTimeout="600"
			Host=""
			UrlAnalyzer="true"
			QueryAnalyzer="true"
			QueryFilter="false"
			QueryParameters=""
			IgnoreCase="true"
			RussianNormalizer="true"
			ForceCheckCode="true">
			<DefaultDocuments>
				<add Name="Default.aspx" />
			</DefaultDocuments>
		</SapeConfig>
	</effetto.Sape>

	<system.web>
 	    <pages
			buffer="true"
			enableSessionState="true"
			enableViewState="false"
			validateRequest="false"
			autoEventWireup="false"
	 	    >
			<!-- sape -->
 	    	<controls><add tagPrefix="efe" namespace="effetto.Sape" assembly="SAPE"/></controls>
 	    </pages>
...
Код:
Server Error in '/' Application.
Invalid object name 'dbo.sape'.
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.Data.SqlClient.SqlException: Invalid object name 'dbo.sape'.

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:

[SqlException (0x80131904): Invalid object name 'dbo.sape'.]
   System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +1953274
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +4849707
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194
   System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +2392
   System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +33
   System.Data.SqlClient.SqlDataReader.get_MetaData() +96
   System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +297
   System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +954
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +162
   System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +32
   System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +141
   System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +12
   System.Data.Common.DbCommand.ExecuteReader() +12
   System.Data.Linq.SqlClient.SqlProvider.Execute(Expression query, QueryInfo queryInfo, IObjectReaderFactory factory, Object[] parentArgs, Object[] userArgs, ICompiledSubQuery[] subQueries, Object lastResult) +332
   System.Data.Linq.SqlClient.SqlProvider.ExecuteAll(Expression query, QueryInfo[] queryInfos, IObjectReaderFactory factory, Object[] userArguments, ICompiledSubQuery[] subQueries) +113
   System.Data.Linq.SqlClient.SqlProvider.System.Data.Linq.Provider.IProvider.Execute(Expression query) +344
   System.Data.Linq.DataQuery`1.System.Linq.IQueryProvider.Execute(Expression expression) +23
   System.Linq.Queryable.Count(IQueryable`1 source) +240
   effetto.Sape.SapeFactory.LoadBase() +523
   effetto.Sape.SapeFactory..ctor() +287
   effetto.Sape.SapeFactory.get_Factory() +29
   effetto.Sape.SapeControl.OnInit(EventArgs e) +47
   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.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +378


Version Information: Microsoft .NET Framework Version:2.0.50727.4206; ASP.NET Version:2.0.50727.4205
Добавлено через 35 минут
Создал табличку:
Код:
create table [dbo].sape(
	Id UNIQUEIDENTIFIER DEFAULT NEWID(),
	Data VarBinary(MAX) NOT NULL
)
Удалил из app_data, изменил флаг на CacheInSQL="true"
В таблу занеслась одна строка с кодом и байтами, в app_data пусто.
На странице все-равно вылазиить только код:
Код:
<!--check code-->
Перевел флаг на ForceCheckCode="false" - стало вообще пусто ...
На странице установлен:
Код:
<efe:SapeLinks runat="server"/>
Куда дальше копать?

Добавлено через 3 минуты
Занес Host="my_domain.ru" - все равно пусто

Последний раз редактировалось lurii; 25.09.2010 в 05:43. Причина: Добавлено сообщение
lurii вне форума   Ответить с цитированием
Старый 25.09.2010, 11:02   #187
Новичок
 
Аватар для effetto
 
Регистрация: 26.01.2009
Адрес: Красноярск
Сообщений: 93
Вес репутации: 188
effetto - весьма и весьма положительная личностьeffetto - весьма и весьма положительная личность
По умолчанию

2lurii: Сайт в сапу добавился? модерацию прошел? ссылки есть? если сылок нет, то вывод и должен быть пустым или только чек код.

Добавлено через 1 минуту
2 SerZH: отправил модуль на тестирование, так как такую ошибку наши ребята уже исправляли. Ошибка повяляется часто? можете выслать бинарник данных?

Последний раз редактировалось effetto; 25.09.2010 в 11:02. Причина: Добавлено сообщение
effetto вне форума   Ответить с цитированием
Старый 25.09.2010, 18:05   #188
Новичок
 
Регистрация: 24.09.2010
Сообщений: 19
Вес репутации: 0
lurii на пути к лучшему
По умолчанию

Цитата:
Сообщение от effetto Посмотреть сообщение
2lurii: Сайт в сапу добавился? модерацию прошел? ссылки есть? если сылок нет, то вывод и должен быть пустым или только чек код.
1) Понял, значит заработало (не добавлял, не проходил, нет), а после какой код должен выводиться?
2) Почему автоматом не создалась таблица? - нет проверки ее существования или просто не обернуто в исключение?
3) Может сделать флаг debug который бы выводил текущую операцию и статус ее успешной обработки? - в конце типа ОК - все в норме.
4) Урлы и их ссылки хранятся в бинарнике и будут нагружать память при каждом обращении к странице?
lurii вне форума   Ответить с цитированием
Старый 25.09.2010, 19:34   #189
Новичок
 
Аватар для effetto
 
Регистрация: 26.01.2009
Адрес: Красноярск
Сообщений: 93
Вес репутации: 188
effetto - весьма и весьма положительная личностьeffetto - весьма и весьма положительная личность
По умолчанию

1) никакого или чек код, если он включен;
2) автоматом она не создается, таблица примитивная а используют этот метод единицы, создайте если нужна, в документации все описано;
3) все и так ок, если вы видете чек код, для этого он и создан;
4) урлы и ссылки хранятся в одном экземпляре для всех страниц, тестирование показало, что для высоко и среждне нагруженых ресурсов эти жертвы ничто по сравнению с затратами на чтение из файла, если данные в памяти не хранить.
effetto вне форума   Ответить с цитированием
Старый 01.01.2011, 18:30   #190
Новичок
 
Регистрация: 24.09.2010
Сообщений: 19
Вес репутации: 0
lurii на пути к лучшему
По умолчанию

Вопрос по размещению одной ссылки, но в разных местах страницы.
Место вывода рассчитывается:
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());%>
теперь ссылка выводится по рандому

Последний раз редактировалось lurii; 01.01.2011 в 18:30. Причина: Добавлено сообщение
lurii вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
НОВЫЙ ГОД!!!!!!!!!!!! Globalzru Курилка 34 01.01.2009 20:39
новый хостинг awe Ошибки при работе с системой 8 10.10.2008 18:30
Новый акк goglin Вопросы по работе системы 18 04.10.2008 15:40
Новый вид анкоров? Chervechok Курилка 9 17.09.2008 08:21
новый сайт.. brucekiev Вопросы от новичков 8 21.12.2007 18:26


Часовой пояс GMT +3, время: 21:51.