2007年3月6日 星期二
使用svcutil 製作非同步之 client proxy code
當已製作非同步的 wcf Service code 完成後,皆下來,就是要製作 client proxy code
但使用 Visual Studio 2005 with WCF extension 後,卻無法製作出非同步的 client code , 如 BeginXXX, EndXXX
後來才發現,在這一版,尚未支援製作非同步的 client proxy code。必需自行使用 svcutil.exe 製作
試了好久,終於…
svcutil http://localhost/BankproPortal/Security.svc /a /ct:System.Collections.Generic.List`1 /namespace:*,UABClient.localhost
/mergeConfig /config:app.config
必須注意到
· `1是必須的,而且是鍵盤左上方的`,而不是單引號的 '
· /namespace 的語法,我不知道為何必須是這樣,但這樣的確可以
參考自 http://www.dasblonde.net/CommentView,guid,c132e497-7fdb-4895-9b71-8542d0400d52.aspx
svcutil /d:d:\LearningWCF /noconfig /o:serviceproxy.cs /r:ContentTypes.dll /ct:System.Collections.Generic.List`1 http://localhost:8000
IConfigurationSectionHandler 與 ConfigurationSection
以前自訂 config 檔時,常常遇到一個問題,就是必須實作IConfigurationSectionHandler,用來讀取 config file 中的一個 section
接著,又必須寫一個 data class ,並將 config handler 中讀取到的資料填到 data class 中。
如果 config 中的資料是階層式的呢?例如定義一個上傳類型,需要幾個檔案。每個檔案的檔名格式,檔的目錄。
這樣的話,就必須寫多個 data class
在 .net framework 2.0 中,就可以用 ConfigurationSection 來對應了。
而且非常自然,讀取上也方常方便。
VS 2005 Html Design View 超慢改善方法
不知道大家是否覺得,使用 VS 2005 開發 Web site 變的超慢!
找了一下網路資源,發現可能是 Navigation bar 的問題。
請在 Tools / Options / Text Editor /Html 中,找到 Display 將 Navigation bar 的 check box 清除掉。
我試了一下,果然快很多。
To add "Atlas" features to an ASP.NET application:
1. Open the ASP.NET application in Visual Studio.
2. Copy the "Atlas" run-time assembly (Microsoft.Web.Atlas.dll) from its installation folder to the application's Bin folder. By default, the "Atlas" assembly is installed in this location:
C:\Program Files\Microsoft ASP.NET\Atlas\v2.0.50727\Atlas
3. Open the Web.config file in the "Atlas" default location.
4. Copy elements required for "Atlas" to the Web.config file in your application's root folder.
Copy these elements as children of the <configuration> element:
<configSections>
<sectionGroup name="microsoft.web" type="Microsoft.Web.Configuration.MicrosoftWebSectionGroup">
<section name="converters" type="Microsoft.Web.Configuration.ConvertersSection"/>
</sectionGroup>
</configSections>
<microsoft.web>
<converters>
<add type="Microsoft.Web.Script.Serialization.Converters.DataSetConverter"/>
<add type="Microsoft.Web.Script.Serialization.Converters.DataRowConverter"/>
<add type="Microsoft.Web.Script.Serialization.Converters.DataTableConverter"/>
</converters>
</microsoft.web>
Copy (or integrate) these elements as children of the <system.web> element:
<pages>
<controls>
<add namespace="Microsoft.Web.UI" assembly="Microsoft.Web.Atlas" tagPrefix="atlas"/>
<add namespace="Microsoft.Web.UI.Controls" assembly="Microsoft.Web.Atlas" tagPrefix="atlas"/>
</controls>
</pages>
<!-- ASMX is mapped to a new handler so that proxy javascripts can also be served. -->
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" type="Microsoft.Web.Services.ScriptHandlerFactory" validate="false"/>
</httpHandlers>
<httpModules>
<add name="ScriptModule" type="Microsoft.Web.Services.ScriptModule"/>
</httpModules>
5. Close all files.