File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -32,7 +32,44 @@ public static MagicOnionServiceDefinition BuildServerServiceDefinition(IServiceP
3232 /// <param name="options">The options for MagicOnion server</param>
3333 public static MagicOnionServiceDefinition BuildServerServiceDefinition ( IServiceProvider serviceProvider , MagicOnionOptions options )
3434 {
35- return BuildServerServiceDefinition ( serviceProvider , AppDomain . CurrentDomain . GetAssemblies ( ) , options ) ;
35+ // NOTE: Exclude well-known system assemblies from automatic discovery of services.
36+ var wellKnownIgnoreAssemblies = new [ ]
37+ {
38+ "netstandard" ,
39+ "System.*" ,
40+ "Microsoft.Win32.*" ,
41+ "Microsoft.Extensions.*" ,
42+ "Microsoft.AspNetCore" ,
43+ "Microsoft.AspNetCore.*" ,
44+ "Grpc.*" ,
45+ "MessagePack" ,
46+ "MessagePack.*" ,
47+ "MagicOnion.Server" ,
48+ "MagicOnion.Server.*" ,
49+ "MagicOnion.Client" ,
50+ "MagicOnion.Client.*" , // MagicOnion.Client.DynamicClient (MagicOnionClient.Create<T>)
51+ "MagicOnion.Abstractions" ,
52+ "MagicOnion.Shared" ,
53+ } ;
54+
55+ var assemblies = AppDomain . CurrentDomain . GetAssemblies ( )
56+ . Where ( x =>
57+ {
58+ return ! wellKnownIgnoreAssemblies . Any ( y =>
59+ {
60+ if ( y . EndsWith ( '*' ) )
61+ {
62+ return x . GetName ( ) . Name ! . StartsWith ( y . Substring ( 0 , y . Length - 1 ) ) ;
63+ }
64+ else
65+ {
66+ return x . GetName ( ) . Name == y ;
67+ }
68+ } ) ;
69+ } )
70+ . ToArray ( ) ;
71+
72+ return BuildServerServiceDefinition ( serviceProvider , assemblies , options ) ;
3673 }
3774
3875 /// <summary>
You can’t perform that action at this time.
0 commit comments