2011年4月16日 星期六

WCF傳輸物件的方法,javascript+ajax傳送Json物件給WCF

我們會需要利用AJAX傳送物件給WCF
讓WCF去接收資料並且再利用
作法為
1.先建立已啟用AJAX 的 WCF
2.建立傳輸的物件,物件需要設定[DataContract],
裡面的要輸出輸入的資料要設定[DataMember]

[DataContract]
public class Person
{
Person() { }
    [DataMember]
    public string FirstName { get; set; }

    [DataMember]
    public string LastName { get; set; }
}

3.要注意資料設定為Serializable和DataMember是不一樣的輸出和輸入
/// Result of Person class marked as Serializable
{"k__BackingField":"Chris","k__BackingField":"Pietschmann"}


/// Result of Person class marked as DataContract with
/// each Property marked as DataMember
{"FirstName":"Chris","LastName":"Pietschmann"}


4.Client端要組和出Json字串上傳給伺服器端,Javascript的使用者要注意要用""包起來
不然會被當作是物件上傳

5.另外要注意中文要用UTF8
string retval = Encoding.UTF8.GetString(ms.ToArray());
Person us = (Person)serial.ReadObject(ms);



參考資料為
http://pietschsoft.com/post/2008/02/NET-35-JSON-Serialization-using-the-DataContractJsonSerializer.aspx

2011年4月14日 星期四

避免虛擬目錄的web.config繼承自IIS根目錄的web.config

前言
Web.Config是會繼承的,當你上層目錄有Web.Config
本層目錄就會繼承到上層的資訊
想要避免的方法如下
<location allowoverride="false" inheritinchildapplications="false" path=".">
</location>

  • allowOverride:設定目前的web.config是否允許由子目錄的web.config來覆寫(預設為true)
  • path:指定哪個資料夾用此設定(或是設定特定網頁具有哪些權限),若沒有設定則代表會套用到目前的資料夾以及子資料夾。至於如何設定特定的資料夾或檔案可以參考此篇MSDN
  • inheritInChildApplications:是否將此web.config繼承到子目錄
文章出處
http://www.dotblogs.com.tw/boodoo1121/archive/2010/01/20/13171.aspx
http://msdn.microsoft.com/zh-tw/library/ms178685(v=vs.80).aspx