私はこのクラスライブラリをロードしたい:wcfサービスからアセンブリをロードするためにBAD IL FORMATを返すのはなぜですか?
namespace ClassLibrary1
{
public class Class1
{
public Class1()
{
}
public static int Sum(int a, int b)
{
return a + b;
}
}
}
私は私に戻っWCFサービスbyte[]
配列(ClassLibrary1の)を持っている私は、このアセンブリに
static void Main(string[] args)
{
FileTransferService.ApplicationHostServiceClient client = new FileTransferService.ApplicationHostServiceClient();
FileTransferService.AssemblyPackage[] asmbs = client.GetFile();
//var newDomain = AppDomain.CreateDomain("FooBar", null, null);
foreach (FileTransferService.AssemblyPackage item in asmbs)
{
byte[] mybuffer = item.Buffer;
new AssemblyLoader().LoadAndCall(mybuffer);
}
}
public class AssemblyLoader : MarshalByRefObject
{
public void LoadAndCall(byte[] binary)
{
Assembly loadedAssembly = AppDomain.CurrentDomain.Load(binary);
object[] tt = { 3, 6 };
Type typ = loadedAssembly.GetType("ClassLibrary1.Class1");
MethodInfo minfo = typ.GetMethod("Sum", BindingFlags.Public);
int x = (int)minfo.Invoke(null, tt);
Console.WriteLine(x);
}
}
をロードすることはできません
このメソッドでエラーが返されます。アセンブリloadedAssembly = AppDomain.CurrentDomain.Load(バイナリ);
ERROR:
BADIMAGEFORMAT EXCEPTION
Could not load file or assembly '4096 bytes loaded from Client2, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.
例外:
Bad IL format
私はこの種のエラーが、無厳密解をグーグルでてきました。 AppDomainを使用してアセンブリをロードします。バイナリのチャンクを渡すの混乱を作成する多くの方法があるよう
4096バイトは、おそらくこれに似た何らかのWCF制限のような疑いがあると聞こえます。 https://fudofuad.wordpress.com/2010/04/26/wcf-streaming-allows-only-4k-4096-bytes-chunks-at-a-time/ –
サーバーのサイドコードの読み取り/送信アセンブリ? –