C# WPF 抓圖遇到「伺服器認可通訊協定違規....」例外
說明
- 雲端電子白板專案遇到向伺服器抓圖更新的時候,遇到
「伺服器認可通訊協定違規. Section=ResponseStatusLine」
的例外而報錯。
- 請示 Google 大神後,找到解決的方式是在 Web.Config 或 App.Config 裡面加上下面這串設定值,也就是要設定
useUnsafeHeaderParsing="true"
。
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>
- But… WPF 似乎沒有 App.Config 這個檔案,如果是透過程式動態設定,就如下:
using System.Configuration;
using System.Net.Configuration;
// System.Configuration.dll 記得加入參考
private void Window_Loaded(object sender, RoutedEventArgs e)
{
//解決「伺服器認可通訊協定違規. Section=...」問題
var config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
var settings = (SettingsSection)config.GetSection("system.net/settings");
settings.HttpWebRequest.UseUnsafeHeaderParsing = true;
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("system.net/settings");
}
-
編譯後可發現會產生
appname.vshost.exe.Config
這個檔案,將其複製一份,更名為appname.exe.Config
即可,內容其實跟前面的 xml 是一樣的。 -
註: appname 就是你自己的專案名稱/應用程式名稱。