title: HttpWebRequest in c# do not work with .net 4.5
body: <p>i'm working on an c# project that send a xml to a server and receives a xml as response.<br>
  With .Net Framework 4.0 installed that works fine.<br>
  With .Net Framework 4.5 installed it throws this Exception:  </p>
  
  <pre><code>System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.  
  bei System.DomainNameHelper.IdnEquivalent(String hostname)  
  bei System.Uri.get_IdnHost()  
  bei System.Net.HttpWebRequest.GetSafeHostAndPort(Uri sourceUri, Boolean addDefaultPort, Boolean forcePunycode)  
  bei System.Net.HttpWebRequest.GenerateProxyRequestLine(Int32 headersSize)  
  bei System.Net.HttpWebRequest.SerializeHeaders()  
  bei System.Net.HttpWebRequest.EndSubmitRequest()  
  bei System.Net.HttpWebRequest.CheckDeferredCallDone(ConnectStream stream)  
  bei System.Net.HttpWebRequest.BeginGetResponse(AsyncCallback callback, Object state)  
  bei Fahrzeugverwaltungsserver.OutsideWorld.MAN_Integrationsserver.RawCommunication.ISServer.doPostAndGet()`  
  </code></pre>
  
  <p>I use the method <code>BeginGetResponse</code> and all parameters there are not null.<br>
  Does anybody know what's wrong?<br>
  Why does it work with 4.0 but not with 4.5?<br>
  Did i forget something to set up?  </p>
  
  <p><strong>Edit 1</strong>   </p>
  
  <pre><code>private void doPostAndGet()
      {
          try
          {
              //caching  
              inform(SystemIcons.Information, Translations.ISServer_postAndGet_0);  
              Trace.TraceInformation("OUT:\n" + Beautify(InputXML));  
  
              string c = cache.Get(InputXML.OuterXml);
              if (c != null)
              {
                  XmlDocument docl = new XmlDocument();
                  docl.LoadXml(c);
                  inform(SystemIcons.Information, Translations.ISServer_postAndGet_1);
                  printInDocument(docl, "Aus Cache.");
                  this.doc = docl;
              }
  
              //Read access information:
              UriBuilder urib = new UriBuilder("http", MANHaendlerdaten.IS_host, 9005, MANHaendlerdaten.IS_path);
  
              urib.UserName = MANHaendlerdaten.IS_user;
              urib.Password = MANHaendlerdaten.IS_password;
  
              String proxyUser = MANHaendlerdaten.IS_proxy_user;
              String proxyPassword = MANHaendlerdaten.IS_proxy_password;
  
              // create credentials for request's header:
              var proxy =
              Convert.ToBase64String(
              Encoding.UTF8.GetBytes(proxyUser + ":" + proxyPassword));
  
              var user =
              Convert.ToBase64String(
              Encoding.UTF8.GetBytes(urib.UserName + ":" + urib.Password));
  
              //set proxy when needed:
              try
              {
                  WebRequest.DefaultWebProxy = new WebProxy(MANHaendlerdaten.IS_proxy_ip, MANHaendlerdaten.IS_proxy_port);
                  if (WebRequest.DefaultWebProxy == null)
                      Trace.WriteLine(String.Format("WebRequest.DefaultWebProxy ist null. {0}, {1}", MANHaendlerdaten.IS_proxy_ip, MANHaendlerdaten.IS_proxy_port));
              }
              catch (Exception e)
              {
                  Trace.TraceError("1\n" + e.ToString());
                  Debug.WriteLine(Translations.ISServer_postAndGet_3);
                  WebRequest.DefaultWebProxy = null; //speed up further request by avoiding proxy-auto-detect
                  //pass when no proxy specified
              }
  
              // System.Net.ServicePointManager.Expect100Continue = false //this is a nasty one if not set to false            
  
              client = (HttpWebRequest)WebRequest.Create(urib.Uri);
  
              //Encodings:
              client.Headers.Add("Accept-Encoding", "deflate");
  
              client.ContentType = "text/xml; charset=UTF-8";
  
              client.Accept = "text/xml; charset=UTF-8";
  
              client.Headers.Add("SOAPAction", "\"\"");
  
              //Authentification:        
              client.Headers.Add("Proxy-Authorization", "Basic " + proxy);
  
              client.Headers.Add("Authorization", "Basic " + user);
  
  
              //Connection and Protocol:
              client.Host = urib.Host;
  
              client.UserAgent = Translations.FullServiceName;
  
              client.ProtocolVersion = HttpVersion.Version10;
  
              client.KeepAlive = true;
  
              client.Method = WebRequestMethods.Http.Post;
  
              client.Timeout = 60000;
  
              client.Proxy = new WebProxy(MANHaendlerdaten.IS_proxy_ip, MANHaendlerdaten.IS_proxy_port);
  
              if (client.Proxy == null)
                  Trace.WriteLine(String.Format("client.Proxy ist null. {0}, {1}", MANHaendlerdaten.IS_proxy_ip, MANHaendlerdaten.IS_proxy_port));
  
              client.ReadWriteTimeout = 60000;
  
  
              //accept cookies within this ISServer-instance
              if (this.cookieCont == null)
              {
                  this.cookieCont = new CookieContainer();
              }
  
              client.CookieContainer = cookieCont;
  
  
              inform(SystemIcons.Information, Translations.ISServer_postAndGet_7);
  
              //Post request:
              using (Stream to_request = client.GetRequestStream())
              {
                  InputXML.Save(to_request);
                  to_request.Flush();
              }
  
  
              RequestState myRequestState = new RequestState();
              myRequestState.request = client;
  
  
              webrequestresponse = false;
              IAsyncResult asyncResult = client.BeginGetResponse(new AsyncCallback(FinishWebRequest), myRequestState);
              while (webrequestresponse == false)
              {
                  Thread.Sleep(100);
              }
          }
          catch (Exception e)
          {
              Trace.TraceError(e.ToString());
              throw e;
          }
  }  
  </code></pre>
  
  <p><strong>Edit 2</strong><br>
  In my Config File i use mostly the appsettings for individual settings. Like:<br>
  <code>&lt;add key="DATABASE_CONNECTION" value="FIREBIRD"/&gt;</code></p>