информационная безопасность
без паники и всерьез
 подробно о проекте
Spanning Tree Protocol: недокументированное применениеПортрет посетителя
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 PHP2Shell начали эксплуатировать... 
 Четыре уязвимости Plex объединяют... 
 Вредоносный релиз LiteLLM 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
  • Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
  • Новичкам также крайне полезно ознакомиться с данным документом.
[.NET] Уже работает, но binary тормозит, а soap не передаёт char. 21.11.04 16:15  Число просмотров: 2115
Автор: Бяша <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





Рейтинг@Mail.ru


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