Как установить настройки system.net в приложении wpf - PullRequest
3 голосов
/ 20 января 2012

В проекте WPF я получаю эту ошибку:

private void btnRetrieve_Click(object sender, RoutedEventArgs e)
{
    Uri uri = new Uri("http://10.214.36.245", UriKind.Absolute);
    using (WebClient wc = new WebClient())
    {
        byte[] barr = wc.DownloadData(uri);
        string sData = new string(barr.Select(a => Convert.ToChar(a)).ToArray());
        tbRetrievedData.Text = sData;
    }
}

The server committed a protocol violation. Section=ResponseStatusLine

То же самое в приложении Windows Form:

private void btnClicked(object sender, EventArgs e)
{
    WebClient wc = new WebClient();
    var c = wc.DownloadData("http://10.214.36.245");
}

Same error

Решение в этом Сервер совершил нарушение протокола.Section = ResponseStatusLine ERROR .

В приложении Windows Form это просто: Application Configuration File

Но я не знаю, как реализовать это решение в приложении WPF.Даже если я добавил файл app.config и изменил его содержимое в соответствии с решением, он показывает эту ошибку:

App.Config Added but it is giving same error

PS: Это время выполнениякод приведен ниже, но я не хочу использовать это решение, поскольку оно не позволяет использовать файл App.config в приложении WPF:

public static bool SetAllowUnsafeHeaderParsing20()
{
    //Get the assembly that contains the internal class
    Assembly aNetAssembly = Assembly.GetAssembly(typeof(SettingsSection));
    if (aNetAssembly != null)
    {
        //Use the assembly in order to get the internal type for the internal class
        Type aSettingsType = aNetAssembly.GetType("System.Net.Configuration.SettingsSectionInternal");
        if (aSettingsType != null)
        {
            //Use the internal static property to get an instance of the internal settings class.
            //If the static instance isn't created allready the property will create it for us.
            object anInstance = aSettingsType.InvokeMember("Section", BindingFlags.Static |
                                                                        BindingFlags.GetProperty |
                                                                        BindingFlags.NonPublic, null, null,
                                                            new object[] { });
            if (anInstance != null)
            {
                //Locate the private bool field that tells the framework is unsafe header parsing should be allowed or not
                FieldInfo aUseUnsafeHeaderParsing = aSettingsType.GetField("useUnsafeHeaderParsing", BindingFlags.NonPublic | BindingFlags.Instance);
                if (aUseUnsafeHeaderParsing != null)
                {
                    aUseUnsafeHeaderParsing.SetValue(anInstance, true);
                    return true;
                }
            }
        }
    }
    return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...