информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
Атака на InternetSpanning Tree Protocol: недокументированное применение
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Бэкдор в xz/liblzma, предназначенный... 
 Три миллиона электронных замков... 
 Doom на газонокосилках 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
ФОРУМ
если вы видите этот текст, отключите в настройках форума использование JavaScript
регистрация





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