информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Сетевые кракеры и правда о деле ЛевинаЗа кого нас держат?
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
 Зловреды выбирают Lisp и Delphi 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
[.NET] Уже работает, но binary тормозит, а soap не передаёт char. 21.11.04 16:15  Число просмотров: 1938
Автор: Бяша <Biasha> Статус: Member
<"чистая" ссылка>
Судя по всему, проблема в .NET 1.1.
А может и наоборот - в 1.0.

Короче, оказалось, что в 1.1 у форматеров появилось поле TypeFilterLevel, которого нет в моей документации, и которое нужно было установить в Full.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconAutomaticDeserializationInNETRemoting.asp

Но, появилась новая проблема:
При вызове функции обратного вызова с параметром char, с плохим символом (например 0х10) soap форматер, видимо, некорректно его загоняет в xml и потом на сервере возникает исключение при разборе xml.
А при использовании бинари форматера всё работает, но каждая передача связанная с делегатом тормозит секунд по 10...
Может хоть это поможете?

server.exe.config правильный
<configuration>
	<system.runtime.remoting>
		<application>
			<service>
				<wellknown
					type="Server, RemoteType"
					objectUri="Server.rem"
					mode="SingleCall"
				/>
			</service>
			<channels>
				<channel ref="http" port="8080">
					<serverProviders>
						<formatter ref="soap" typeFilterLevel="Full"/>
					</serverProviders>
				</channel>
			</channels>
		</application>
	</system.runtime.remoting>
</configuration>

---
<programming>
[.NET] Как правильно использовать делегаты удалённо? 21.11.04 00:08  
Автор: Бяша <Biasha> Статус: Member
Отредактировано 21.11.04 00:11  Количество правок: 1
<"чистая" ссылка>
Скажите, пожалуйста, как передать серверу функцию обратного вызова?
Пример "Remoting Example: Delegates and Events" из MSDN у меня вызывает то же самое исключение, что и мой код ниже.
Каких таких прав не хватает, и как их дать?
Пробовал поместить все сборки в GAC, назначал им явно FullTrust, хоть они и так не имеют ограничений - не помогло.

program output:
Unhandled Exception: System.Security.SecurityException: Request for the permission of type System.DelegateSerializationHolder failed.

Server stack trace:
   at System.Runtime.Serialization.FormatterServices.CheckTypeSecurity(Type t, TypeFilterLevel securityLevel)
   at System.Runtime.Serialization.Formatters.Soap.ObjectReader.CheckSecurity(ParseRecord pr)
   at System.Runtime.Serialization.Formatters.Soap.ObjectReader.ParseObject(ParseRecord pr)
   at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Parse(ParseRecord pr)
   at System.Runtime.Serialization.Formatters.Soap.SoapHandler.StartChildren()
   at System.Runtime.Serialization.Formatters.Soap.SoapParser.ParseXml()
   at System.Runtime.Serialization.Formatters.Soap.SoapParser.Run()
   at System.Runtime.Serialization.Formatters.Soap.ObjectReader.Deserialize(HeaderHandler handler, ISerParser serParser)
   at System.Runtime.Serialization.Formatters.Soap.SoapFormatter.Deserialize(Stream serializationStream, HeaderHandler handler)
   at System.Runtime.Remoting.Channels.CoreChannel.DeserializeSoapRequestMessage(Stream inputStream, Header[] h, Boolean bStrictBinding, TypeFilterLevel securityLevel)
   at System.Runtime.Remoting.Channels.SoapServerFormatterSink.ProcessMessage(IServerChannelSinkStack sinkStack, IMessage requestMsg, ITransportHeaders requestHeaders, Stream requestStream, IMessage& responseMsg, ITransportHeaders& responseHeaders, Stream& responseStream)

Exception rethrown at [0]:
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Server.AtServ(SomeFunk funk)
   at Client.Main(String[] Args)

make.bat
csc /t:library RemoteType.cs
csc /r:RemoteType.dll server.cs
csc /r:RemoteType.dll client.cs

RemoteType.cs
using System;

public class Server : MarshalByRefObject
{
	public delegate void SomeFunk();
	public void AtServ(SomeFunk funk)
	{}
}

client.cs
using System;
using System.Runtime.Remoting;

public class ClassWithFunk : MarshalByRefObject
{public void funk(){}}

public class Client
{
	public static void Main(string[] Args)
	{
		RemotingConfiguration.Configure("client.exe.config");

		Server srv = new Server();

		ClassWithFunk cwf = new ClassWithFunk();
		Server.SomeFunk funk = new Server.SomeFunk(cwf.funk);

		srv.AtServ(funk);
	}
}

client.exe.config
<configuration>
	<system.runtime.remoting>
		<application>
			<client>
				<wellknown
					type="Server, RemoteType"
					url="http://localhost:8080/Server.rem"
				/>
			</client>
			<channels>
				<channel ref="http" port="0"/>
			</channels>
		</application>
	</system.runtime.remoting>
</configuration>

server.cs
using System;
using System.Runtime.Remoting;

public class Server
{
	public static void Main(string[] Args)
	{
		RemotingConfiguration.Configure("server.exe.config");
		Console.WriteLine("The server is listening. Press Enter to exit....");
		Console.ReadLine();
	}
}

server.exe.config
<configuration>
	<system.runtime.remoting>
		<application>
			<service>
				<wellknown
					type="Server, RemoteType"
					objectUri="Server.rem"
					mode="SingleCall"
				/>
			</service>
			<channels>
				<channel ref="http" port="8080"/>
			</channels>
		</application>
	</system.runtime.remoting>
</configuration>

---
[.NET] Уже работает, но binary тормозит, а soap не передаёт char. 21.11.04 16:15  
Автор: Бяша <Biasha> Статус: Member
<"чистая" ссылка>
Судя по всему, проблема в .NET 1.1.
А может и наоборот - в 1.0.

Короче, оказалось, что в 1.1 у форматеров появилось поле TypeFilterLevel, которого нет в моей документации, и которое нужно было установить в Full.
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconAutomaticDeserializationInNETRemoting.asp

Но, появилась новая проблема:
При вызове функции обратного вызова с параметром char, с плохим символом (например 0х10) soap форматер, видимо, некорректно его загоняет в xml и потом на сервере возникает исключение при разборе xml.
А при использовании бинари форматера всё работает, но каждая передача связанная с делегатом тормозит секунд по 10...
Может хоть это поможете?

server.exe.config правильный
<configuration>
	<system.runtime.remoting>
		<application>
			<service>
				<wellknown
					type="Server, RemoteType"
					objectUri="Server.rem"
					mode="SingleCall"
				/>
			</service>
			<channels>
				<channel ref="http" port="8080">
					<serverProviders>
						<formatter ref="soap" typeFilterLevel="Full"/>
					</serverProviders>
				</channel>
			</channels>
		</application>
	</system.runtime.remoting>
</configuration>

---
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach