There are several ways to deploy C# apps to AWS, depending on your application’s requirements and architecture. Here are a few options:

1. AWS Elastic Beanstalk: Elastic Beanstalk supports deploying C# applications using Windows Server with IIS. You can deploy your app using the AWS Management Console, AWS Toolkit for Visual Studio, AWS CLI, or AWS Elastic Beanstalk CLI. Elastic Beanstalk automatically handles environment provisioning, load balancing, automatic scaling, and application health monitoring.

2. AWS Lambda: If you have a smaller C# app with lightweight requirements, you could consider deploying it as a serverless function using AWS Lambda. AWS Lambda supports running C# functions and provides automatic scaling and high availability. You can deploy your function using the AWS Management Console, AWS Toolkit for Visual Studio, or AWS CLI.

3. AWS Fargate: Fargate is a serverless compute engine for containers. You can package your C# app into a container and deploy it using Fargate. Fargate abstracts away the underlying infrastructure and allows you to run containers without managing the underlying hosts. You can deploy your containers using the AWS Management Console, AWS CLI, or AWS SDKs.

4. EC2 Instances: If you have a more complex C# app with specific server requirements, you can deploy it on EC2 instances. You can choose to create and manage your own EC2 instances or use managed services like AWS Elastic Beanstalk or AWS OpsWorks.

In addition to these options, you can also use AWS CodeDeploy, AWS CloudFormation, or third-party tools like Octopus Deploy or Jenkins for managing your deployment process. The best option for deploying your C# app to AWS will depend on your specific requirements and architecture.