2008-09-27

巢狀 using 排版

原來的格式

using (Rijndael aes = RijndaelManaged.Create())
{
    using (ICryptoTransform cryptor = aes.CreateEncryptor(rgbKey, rgbIV))
    {
        using (CryptoStream cs = new CryptoStream(output, cryptor, CryptoStreamMode.Write))
        {
            byte[] buf = new byte[8192];
            for (int len = 0; (len = input.Read(buf, 0, buf.Length)) > 0; )
            {
                cs.Write(buf, 0, len);
            }
        }
    }
}

調整後的格式

using (Rijndael aes = RijndaelManaged.Create())
using (ICryptoTransform cryptor = aes.CreateEncryptor(rgbKey, rgbIV))
using (CryptoStream cs = new CryptoStream(output, cryptor, CryptoStreamMode.Write))
{
    byte[] buf = new byte[8192];
    for (int len = 0; (len = input.Read(buf, 0, buf.Length)) > 0; )
    {
        cs.Write(buf, 0, len);
    }
}

調整後的程式是不是比較美呢!

 

keywords: c#, coding style

Change default code access security policy with caspol.exe

為了解決讓網頁中的 .NET 元件能夠存取剪貼簿問題, 需要做兩件事, 第一件是先將該網站加入信任網站列表, 第二件是調整 .NET Framework 針對信任網站的預設安全性, 要從 Low Trust 調整為 Medium Trust

第一件事比較簡單, 就略過不提, 第二件事就比較複雜一點, 如果 user 的電腦有裝 .NET Framework SDK 的話(通常是不太可能) 還可以透過系統管理工具裡面的 Microsoft .NET Framework 2.0 Configuration Tool 來調整, 否則的話, 最快最簡單的方式就是透過 caspol.exe 這個 .NET Framework 2.0 提供的指令來完成, 如下:

變更 Trusted 站台預設的安全性為 LocalIntranet - Medium Trust (預設為 Internet - Low Trust)

%WINDIR%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -pp off -m -cg Trusted_Zone LocalIntranet

如果反悔想重設為系統原始設定的話, 可以使用以下指令

%WINDIR%\Microsoft.NET\Framework\v2.0.50727\caspol.exe -pp off -a -reset

 

keywords: .net, security, caspol

Enable trace log of HttpWebRequest

之前為了解決一個 .NET 1.1 的 HttpWebRequest.KeepAlive 屬性所造成的 Proxy-Authenticate 失敗問題, 在尋找答案的過程中不小心又多學到一招關於 .NET 內建的 Trace 功能, 其實早在很久以前就曾經用 Reflector 在 System.Net 下面的類別中看到一些和 Log 有關的程式碼, 只是那時候沒有多去注意該怎麼把那些 Log 資訊顯示出來, 這次碰巧看到, 順便記錄一下!!

啟用 Log 的方式就是仿照以下的格式修改 config 檔, 針對想要觀看 Log 的類別調整一下注解即可! 要注意的是記得在正式出貨前關閉此 Log, 否則效率會很差!

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.diagnostics>
        <trace autoflush="true" />

        <sharedListeners>
            <add name="MyTraceFile" type="System.Diagnostics.TextWriterTraceListener" initializeData="System.Net.trace.log" />
        </sharedListeners>

        <sources>
            <!--
            <source name="System.Net" maxdatasize="1024">
                <listeners>
                    <add name="MyTraceFile"/>
                </listeners>
            </source>
            <source name="System.Net.Sockets" maxdatasize="1024">
                <listeners>
                    <add name="MyTraceFile"/>
                </listeners>
            </source>
            <source name="System.Net.Cache">
                <listeners>
                    <add name="MyTraceFile"/>
                </listeners>
            </source>
            <source name="System.Net.HttpListener">
                <listeners>
                    <add name="MyTraceFile"/>
                </listeners>
            </source>
            -->
        </sources>

        <switches>
            <!--
            <add name="System.Net" value="Verbose" />
            <add name="System.Net.Sockets" value="Verbose" />
            <add name="System.Net.Cache" value="Verbose" />
            <add name="System.Net.HttpListener" value="Verbose" />
            -->
        </switches>
    </system.diagnostics>
</configuration> 

 

keywords: trace, .net, webrequest