Grpc.Core.RpcException method is unimplemented with C# client and Java Server

I managed to find the source of the problem. For anyone else having this problem:

Make sure your .proto file is identical for both client and server and it has the same package. When the client calls a method on the remote server, it uses the full name of the remote class and the package.

However this was not the reason why the method appeared as unimplemented to the client. It was this:

super.login(request,responseStreamObserver);

Calling the super method login sends an async UNIMPLEMENTED error code back to the client. This is the login() method in the generated class:

public void login(LoginUserDTO request,StreamObserver<Response> responseObserver) {
          asyncUnimplementedUnaryCall(METHOD_LOGIN, responseObserver);
}

So make sure in the implementation of your service methods you don't call the super method as it will appear to the client as UNIMPLEMENTED. If you generate @Override methods using IntelliJ IDEA it will add the super method call. Make sure to delete it.