「.NET」カテゴリーアーカイブ

Windows 8.1、Windows10でVisual Studio 2010起動時にエラー

Windows 8 から Windows 8.1 にアップデートしたら、Visual Studio 2010 起動時に、「C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.Vsa.tlb が見つからない」といった内容のエラーダイアログが表示されるようになった。(ただし起動はできるし、.NET Framework 4しか使っていないので、問題なく使用できているように見える。)

visualstudio2010error

「Windows の機能の有効化または無効化」で「.NET Framework 3.5 (.NET 2.0 および 3.0 を含む)」を有効にしたら、エラーは表示されなくなった。

Visual Studio Error in Windows 8.1 - Super User.

補足

Windows 10 Anniversary Update でも同じ状態になった。解決方法も同じ。

log4netでログ出力先パス、ファイル名の取得、設定

log4net.Repository.ILoggerRepository[] repositories = log4net.LogManager.GetAllRepositories();
foreach (log4net.Repository.ILoggerRepository repository in repositories)
{
    foreach (log4net.Appender.IAppender appender in repository.GetAppenders())
    {
        log4net.Appender.FileAppender fileAppender = appender as log4net.Appender.FileAppender;
        if (fileAppender != null)
        {
            appender.File = "log.log"; //出力先ファイルを設定
            appender.ActivateOptions();
        }
    }
}

※ 上記のようにコードでFileを設定する場合も、依然としてXMLの設定にはFileの指定は必要だった。

log4netで設定したログ出力先パス、ファイル名の取得: DOBON.NETプログラミング掲示板過去ログ
log4netでのログ出力について - Insider.NET - @IT)

.NETのHttpWebRequest.GetResponseでステータスコードが4xxの場合にエンティティボディを取得する

最初できないかと思ったけど、WebExceptionのResponseプロパティで取得できた。
HttpWebRequest.GetResponse()は、ステータスコードが2xx以外の場合は例外WebExceptionをスローするようである。例外をcatchしてResponseを見ればよい。

try
{
    using (HttpWebResponse response = (HttpWebResponse)myHttpWebRequest.GetResponse()) {
        // ...
    }
}
catch (WebException e)
{
    using (HttpWebResponse response = (HttpWebResponse)e.Response) {
        // ...
    }
}

.Net HttpWebRequest.GetResponse() raises exception when http status code 400 (bad request) is returned - Stack Overflow