В проекте 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;
}
}
То же самое в приложении Windows Form:
private void btnClicked(object sender, EventArgs e)
{
WebClient wc = new WebClient();
var c = wc.DownloadData("http://10.214.36.245");
}
Решение в этом Сервер совершил нарушение протокола.Section = ResponseStatusLine ERROR .
В приложении Windows Form это просто:
Но я не знаю, как реализовать это решение в приложении WPF.Даже если я добавил файл app.config и изменил его содержимое в соответствии с решением, он показывает эту ошибку:
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;
}