0
上週我創建了一個使用soap返回多行的asmx web服務。WCF - 返回多個記錄
我現在正轉向WCF,我也想做同樣的事情。
在我的ASMX Web服務我做了以下..
public class sample
{
public string Id { get; set; }
public string Name { get; set; }
public string NameOfFile { get; set; }
//public int Distance { get; set; }
}
[WebMethod]
public sample[] Test(int count, float lat, float lng)
{
DataTable dt = new Gallery().DisplayNearestByLatLong(count, lat, lng);
var samples = new List<sample>();
foreach (DataRow item in dt.Rows)
{
var s = new sample();
s.Id = item[0].ToString();
s.Name = item[1].ToString();
s.NameOfFile = item[2].ToString();
//s.Distance = (int)item[3];
samples.Add(s);
}
return samples.ToArray();
}
此代碼的工作很大,但現在我想這樣做,但使用WCF。
我現在的WCF文件看起來像這樣(我複製一個教程,但已經設置了數據契約(我認爲這是需要的?))
GalleryWebService.cs
public class GalleryWebService : IGalleryWebService
{
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
return composite;
}
public CompositeType GetTestData()
{
return new CompositeType();
}
}
IGalleryWebService.cs
[ServiceContract]
public interface IGalleryWebService
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
[OperationContract]
[WebGet(BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "test/random")]
CompositeType GetTestData();
}
[DataContract]
public class CompositeType
{
[DataMember]
string _id;
public string Id
{
get { return _id; }
set { _id = value; }
}
[DataMember]
string _name = "Hello";
public string Name
{
get { return _name; }
set { _name = value; }
}
[DataMember]
string _nameoffile = "Hello";
public string NameOfFile
{
get { return _nameoffile; }
set { _nameoffile = value; }
}
}
什麼是最好的方式去做和如何做?非常感謝您的幫助!
在此先感謝。
O.k,我已經實現了,但是當我把它放在我的活的IIS Web服務器上時,它不起作用。這只是當我把DataTable放入時。你有什麼想法嗎? – tmutton 2010-12-11 14:34:53
我得到了錯誤.. IIS指定的身份驗證方案'IntegratedWindowsAuthentication,Anonymous',但綁定僅支持完全確定一個身份驗證方案的規範。有效的認證方案是摘要,協商,NTLM,基本或匿名。更改IIS設置,以便只使用單個身份驗證方案。 – tmutton 2010-12-11 14:51:57
控制面板 - >管理工具 - > IIS - >選擇一個網站或應用程序 - >雙擊Authentificcation圖標 - >禁用集成Windows認證 – vorrtex 2010-12-11 16:10:15