0

次のコールスタックからこのハンドルされていない例外を取得していますが、なぜこのように失敗するのかわかりません... (ただし、私が実行している方法について何か特別なことがあるかもしれませんが...)

「アプリドメイン間のリモート呼び出しは、アセンブリ 'System.Xml.Linq、Version=4.0.0.0、Culture=neutral、PublicKeyToken=b77a5c561934e089' のタイプ 'System.Xml.Linq.XElement' で失敗し、シリアル化可能としてマークされていません」

Server stack trace: 
   at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)
   at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)
   at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
   at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder)
   at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder)
   at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo)
   at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck)
   at System.Runtime.Remoting.Channels.CrossAppDomainSerializer.SerializeMessageParts(ArrayList argsToSerialize)
   at System.Runtime.Remoting.Messaging.SmuggledMethodCallMessage..ctor(IMethodCallMessage mcm)
   at System.Runtime.Remoting.Messaging.SmuggledMethodCallMessage.SmuggleIfPossible(IMessage msg)
   at System.Runtime.Remoting.Channels.CrossAppDomainSink.SyncProcessMessage(IMessage reqMsg)

Exception rethrown at [0]: 

   Source=mscorlib
   StackTrace:
     Server stack trace: 
        at System.Runtime.Serialization.FormatterServices.InternalGetSerializableMembers(RuntimeType type)
        at System.Runtime.Serialization.FormatterServices.GetSerializableMembers(Type type, StreamingContext context)
        at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitMemberInfo()
        at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder)
        at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize(Type objectType, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, SerializationBinder binder)
        at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write(WriteObjectInfo objectInfo, NameInfo memberNameInfo, NameInfo typeNameInfo)
        at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize(Object graph, Header[] inHeaders, __BinaryWriter serWriter, Boolean fCheck)
        at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize(Stream serializationStream, Object graph, Header[] headers, Boolean fCheck)
        at System.Runtime.Remoting.Channels.CrossAppDomainSerializer.SerializeMessageParts(ArrayList argsToSerialize)
        at System.Runtime.Remoting.Messaging.SmuggledMethodCallMessage..ctor(IMethodCallMessage mcm)
        at System.Runtime.Remoting.Messaging.SmuggledMethodCallMessage.SmuggleIfPossible(IMessage msg)
        at System.Runtime.Remoting.Channels.CrossAppDomainSink.SyncProcessMessage(IMessage reqMsg)
     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 Microsoft.ServiceHosting.Tools.MSBuildTasks.PackageCreator.CreateServiceApplicationPackage(String serviceRdFilePath, String processedServiceDefinitionFile, FileStream packageStream, Dictionary`2 namedStreams, Dictionary`2 rolesDictionary)

密輸されているメッセージ情報を調べると、argsToSerialize にいくつかの MemoryStreams が含まれていることがわかります。

+       [0x00000000]    {[Kernel, Microsoft.ServiceHosting.Tools.Internal.SimpleServiceModel.Role]} System.Collections.Generic.KeyValuePair<string,Microsoft.ServiceHosting.Tools.Internal.SimpleServiceModel.Role>

Microsoft.ServiceHosting.Tools.Internal.SimpleServiceModel.Role は としてマークされてい[Serializable]ます。

シリアル化は、おそらく Microsoft.ServiceHosting.Tools.Internal.SimpleServiceModel.RoleEnvironment 型のプロパティのシリアル化の途中にあるようです

これにはXElement...あはが含まれています。XElement が [Serializable] クラスにあってはならないため、これは壊れているだけですか? しかし、コマンド ラインから cspack を実行すると、この問題がどのように再現されないのでしょうか? これを修正するにはどうすればよいですか?

4

1 に答える 1

0

Azure SDK で働いている人に連絡を取りました。彼は、私が SDK 2.5 で遭遇したバグは SDK 2.5.1 では修正されていると教えてくれました。まだテストしていません。

于 2015-08-21T21:19:14.600 に答える