title: Microsoft Azure Text Translator - Subscription Key Not Working
body: <p>I am trying to build a basic text translator in console using Microsoft Azure's Text Translator. However, my subscription keys are simply not working. I have generated them multiple times, as well as inputted them manually. Please assist. I have left in the keys for further clarification. Thank you for reading, and for your help.</p>
  
  <p>The code generates this error:</p>
  
  <blockquote>
    <p>if (null == subscriptionKey)
                    {
                        throw new Exception("Please set/export the environment variable: " + key_var);</p>
  </blockquote>
  
  <pre><code> // This sample requires C# 7.1 or later for async/await.
  
      using System;
      using System.Collections.Generic;
      using System.Net.Http;
      using System.Text;
      using System.Threading.Tasks;
      // Install Newtonsoft.Json with NuGet
      using Newtonsoft.Json;
  
      namespace TranslateTextSample
      {
          /// &lt;summary&gt;
          /// The C# classes that represents the JSON returned by the Translator Text API.
          /// &lt;/summary&gt;
          public class TranslationResult
          {
              public DetectedLanguage DetectedLanguage { get; set; }
              public TextResult SourceText { get; set; }
              public Translation[] Translations { get; set; }
          }
  
          public class DetectedLanguage
          {
              public string Language { get; set; }
              public float Score { get; set; }
          }
  
          public class TextResult
          {
              public string Text { get; set; }
              public string Script { get; set; }
          }
  
          public class Translation
          {
              public string Text { get; set; }
              public TextResult Transliteration { get; set; }
              public string To { get; set; }
              public Alignment Alignment { get; set; }
              public SentenceLength SentLen { get; set; }
          }
  
          public class Alignment
          {
              public string Proj { get; set; }
          }
  
          public class SentenceLength
          {
              public int[] SrcSentLen { get; set; }
              public int[] TransSentLen { get; set; }
          }
  
          class Program
          {
              private const string key_var="b1f43a68dce24b0280360691ad68bc75";
              private static readonly string subscriptionKey = Environment.GetEnvironmentVariable(key_var);
  
              private const string endpoint_var = "https://consoletexttranslator.cognitiveservices.azure.com/sts/v1.0/issuetoken";
              private static readonly string endpoint = Environment.GetEnvironmentVariable(endpoint_var);
  
              static Program()
              {
                  if (null == subscriptionKey)
                  {
                      throw new Exception("Please set/export the environment variable: " + key_var);
                  }
                  if (null == endpoint)
                  {
                      throw new Exception("Please set/export the environment variable: " + endpoint_var);
                  }
              }
  
              // Async call to the Translator Text API
              static public async Task TranslateTextRequest(string subscriptionKey, string endpoint, string route, string inputText)
              {
                  object[] body = new object[] { new { Text = inputText } };
                  var requestBody = JsonConvert.SerializeObject(body);
  
                  using (var client = new HttpClient())
                  using (var request = new HttpRequestMessage())
                  {
                      // Build the request.
                      request.Method = HttpMethod.Post;
                      request.RequestUri = new Uri(endpoint + route);
                      request.Content = new StringContent(requestBody, Encoding.UTF8, "application/json");
                      request.Headers.Add("Ocp-Apim-Subscription-Key", subscriptionKey);
  
                      // Send the request and get response.
                      HttpResponseMessage response = await client.SendAsync(request).ConfigureAwait(false);
                      // Read response as a string.
                      string result = await response.Content.ReadAsStringAsync();
                      TranslationResult[] deserializedOutput = JsonConvert.DeserializeObject&lt;TranslationResult[]&gt;(result);
                      // Iterate over the deserialized results.
                      foreach (TranslationResult o in deserializedOutput)
                      {
                          // Print the detected input languge and confidence score.
                          Console.WriteLine("Detected input language: {0}\nConfidence score: {1}\n", o.DetectedLanguage.Language, o.DetectedLanguage.Score);
                          // Iterate over the results and print each translation.
                          foreach (Translation t in o.Translations)
                          {
                              Console.WriteLine("Translated to {0}: {1}", t.To, t.Text);
                          }
                      }
                  }
              }
  
              static async Task Main(string[] args)
              {
                  // This is our main function.
                  // Output languages are defined in the route.
                  // For a complete list of options, see API reference.
                  // https://docs.microsoft.com/azure/cognitive-services/translator/reference/v3-0-translate
                  string route = "/translate?api-version=3.0&amp;to=de&amp;to=it&amp;to=ja&amp;to=th";
                  // Prompts you for text to translate. If you'd prefer, you can
                  // provide a string as textToTranslate.
                  Console.Write("Type the phrase you'd like to translate? ");
                  string textToTranslate = "Hello, Tommy.";
                 await TranslateTextRequest(subscriptionKey, endpoint, route, textToTranslate);
                  Console.WriteLine("Press any key to continue.");
                  Console.ReadKey();
              }
          }
      }
  </code></pre>