# Grpc.Core.RpcException: Status(StatusCode="Unimplemented", Detail="Method 'YourMethod' is unimplemented.")

- **ID:** `dotnet/grpc-unimplemented-service`
- **Domain:** dotnet
- **Category:** protocol_error
- **Verification:** ai_generated
- **Fix Rate:** 90%

## Root Cause

The gRPC client calls a method that the server has not registered or implemented, often due to missing service binding or incorrect proto compilation.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| Grpc.AspNetCore 2.57.0 | active | — | — |
| Google.Protobuf 3.24.0 | active | — | — |
| Grpc.Tools 2.57.0 | active | — | — |

## Workarounds

1. **Regenerate both client and server stubs from the same .proto file using 'dotnet grpc' or 'protoc' tool. Ensure the server's startup code maps the service: 'app.UseEndpoints(endpoints => { endpoints.MapGrpcService<MyServiceImpl>(); });'** (90% success)
   ```
   Regenerate both client and server stubs from the same .proto file using 'dotnet grpc' or 'protoc' tool. Ensure the server's startup code maps the service: 'app.UseEndpoints(endpoints => { endpoints.MapGrpcService<MyServiceImpl>(); });'
   ```
2. **Verify the service is registered in the DI container: 'services.AddGrpc();' and 'services.AddScoped<MyServiceImpl>();' before mapping in endpoints.** (85% success)
   ```
   Verify the service is registered in the DI container: 'services.AddGrpc();' and 'services.AddScoped<MyServiceImpl>();' before mapping in endpoints.
   ```

## Dead Ends

- **** — Checking only the client-side proto file while the server uses an older version causes mismatch; both must be regenerated from the same .proto. (70% fail)
- **** — Restarting the server without recompiling the service code does not register new methods; the error persists. (85% fail)
- **** — Assuming the method name is case-insensitive in gRPC leads to wrong endpoint calls; gRPC method names are case-sensitive. (60% fail)
