HttpWebRequest w c # nie działa z .net 4.5

Pracuję nad projektem c #, który wysyła xml na serwer i odbiera xml jako odpowiedź.
Z zainstalowanym .Net Framework 4.0 działa dobrze.
Po zainstalowaniu .Net Framework 4.5 powoduje wyjątek:

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()`  

Używam tej metodyBeginGetResponse a wszystkie parametry nie są zerowe.
Czy ktoś wie, co się stało?
Dlaczego działa z 4.0, ale nie z 4.5?
Czy zapomniałem coś skonfigurować?

Edytuj 1

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;
        }
}  

Edytuj 2
W moim pliku konfiguracyjnym używam głównie ustawień aplikacji dla indywidualnych ustawień. Lubić:
<add key="DATABASE_CONNECTION" value="FIREBIRD"/>

questionAnswers(4)

yourAnswerToTheQuestion