2007-09-29

過時的 System.Net.WebProxy.GetDefaultProxy()

今天在把一個有用到 System.Net.WebProxy.GetDefaultProxy() 類別的程式從 .NET 1.1 升級到 .NET 2.0, 編譯器警告說這個方法已經過時, 訊息是:

This method has been deprecated. Please use the proxy selected for you by default. http://go.microsoft.com/fwlink/?linkid=14202

奇怪的是, 它並沒有像其他的警告訊息會告訢我們一個取代的方法, 怎麼辦呢? 趕快打開 Reflector 查一下, 原來該方法是呼叫一個未開放的建構子 internal WebProxy(bool enableAutoproxy) 來取得系統預設的 Proxy 設定! 嗯? 難道要用 Reflection 的方式去呼叫嗎? 那樣子就太遜了吧!!

馬上想到之前也有一個類似的過時屬性 GlobalProxySelection.Select, .NET 2.0 建議改成 WebRequest.DefaultProxy, 所以就轉向 WebRequest 去試著尋找答案, 果然找到一個 WebRequest.GetSystemWebProxy() 的方法, 看名字就覺得是它了, 但還是要再確認一下, 稍微用 Reflector 再追了一下, 果然看到 new WebProxy(true) 出現在 InternalGetSystemWebProxy() 方法中! 肯定是它了!

搞定!! (真是的, 既然要改變作法, 說明就該寫清楚一點嘛, 還要讓人自己找!)

2007-09-26

Server name 變更後, Reporting Service 會出問題!

今天在升級一台 SQL2005 到 SP2 的時候, 出現找不到 Reporting Service Instance 的錯誤, 仔細看了一下, 才發現原來是因為 server name 曾經改過(以前 SQL2000 也發生過類似的問題), 雖然 Database Engine 部分還是可以連得到, 可是 Reporting Service 就沒那麼聰明了, Google 了一下, 很快的找到了解決方法:

  1. 修改 sys.sysservers 的資料, 以符合目前的主機名稱 sp_dropserver 'old_server_name' sp_addserver 'new_server_name'
  2. 修改 rsreportserver.config 的 UrlRoot 讓檔案預設的位置在 %ProgramFiles%\Microsoft SQL Server\MSSQL.n\Reporting Services\ReportingServer 底下(MSSQL.n 的 n 會視各機器不同, 我的是 MSSQL.3)
  3. 開啟 程式集->[Microsoft SQL Server 2005]->[Configuration Tools]->[Reporting Services Configuration], 點選 Database Setup, 修改 Server Name 成新的名稱
  4. 重新啟動 SQL Server Reporting Services
  5. 再次開啟 Reporting Services Configuration, 點選 Encryption Keys, 先 Delete 舊的 Key, 再按 Change 重新建立一組新的 Key.
搞定!

2007-09-03

互動式 Office 2003 對 Office 2007 命令參照指南

對於 Office 2007 新的 Ribbon 介面雖然覺得還滿可愛的, 但是常常就是會有找不到功能的困擾, 今天不小心發現了 Microsoft 提供的一個說明網頁, 以互動式的方式教你怎麼找到以前在 Office 2003 的命令, 還挺有趣的, 竟然會有這樣子的教學方式, 應該好好學習學習!! Excel: http://office.microsoft.com/zh-tw/excel/HA101491511028.aspx Word: http://office.microsoft.com/zh-tw/word/HA100744321028.aspx PowerPoint: http://office.microsoft.com/zh-tw/powerpoint/HA101490761028.aspx