|  | @@ -0,0 +1,52 @@
 | 
	
		
			
				|  |  | +# gRPC C# Server Reflection
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +This document shows how to use gRPC Server Reflection in gRPC C#.
 | 
	
		
			
				|  |  | +Please see [C++ Server Reflection Tutorial](../server_reflection_tutorial.md)
 | 
	
		
			
				|  |  | +for general information and more examples how to use server reflection.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +## Enable server reflection in C# servers
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +C# Server Reflection is an add-on library.
 | 
	
		
			
				|  |  | +To use it, first install the [Grpc.Reflection](https://www.nuget.org/packages/Grpc.Reflection/)
 | 
	
		
			
				|  |  | +Nuget package into your project.
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +Unlike in other languages, with C# you need to manually register the service
 | 
	
		
			
				|  |  | +descriptors with the reflection service implementation when creating a server.
 | 
	
		
			
				|  |  | +```csharp
 | 
	
		
			
				|  |  | +// the reflection service will be aware of "Greeter" and "ServerReflection" services.
 | 
	
		
			
				|  |  | +var reflectionServiceImpl = new ReflectionServiceImpl(Greeter.Descriptor, ServerReflection.Descriptor);
 | 
	
		
			
				|  |  | +server = new Server()
 | 
	
		
			
				|  |  | +{
 | 
	
		
			
				|  |  | +    Services =
 | 
	
		
			
				|  |  | +    {
 | 
	
		
			
				|  |  | +        // the server will serve 2 services, the Greeter and the ServerReflection
 | 
	
		
			
				|  |  | +        ServerReflection.BindService(new GreeterImpl()),
 | 
	
		
			
				|  |  | +        ServerReflection.BindService(reflectionServiceImpl)
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    Ports = { { "localhost", 50051, ServerCredentials.Insecure } }
 | 
	
		
			
				|  |  | +};
 | 
	
		
			
				|  |  | +server.Start();
 | 
	
		
			
				|  |  | +```
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +After starting the server, you can verify that the server reflection
 | 
	
		
			
				|  |  | +is working properly by using the `grpc_cli` command line tool:
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | + ```sh
 | 
	
		
			
				|  |  | +  $ grpc_cli ls localhost:50051
 | 
	
		
			
				|  |  | +  ```
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  output:
 | 
	
		
			
				|  |  | +  ```sh
 | 
	
		
			
				|  |  | +  helloworld.Greeter
 | 
	
		
			
				|  |  | +  grpc.reflection.v1alpha.ServerReflection
 | 
	
		
			
				|  |  | +  ```
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +  For more examples and instructions how to use the `grpc_cli` tool,
 | 
	
		
			
				|  |  | +  please refer to the [`grpc_cli` documentation](../command_line_tool.md)
 | 
	
		
			
				|  |  | +  and the [C++ Server Reflection Tutorial](../server_reflection_tutorial.md).
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +## Additional Resources
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +The [Server Reflection Protocol](../server-reflection.md) provides detailed
 | 
	
		
			
				|  |  | +information about how the server reflection works and describes the server reflection
 | 
	
		
			
				|  |  | +protocol in detail.
 |