0

私は次のWcfデータサービスを持っています:

public class WcfDataService : DataService<WcfDataServiceContext>
{
    public static void InitializeService(DataServiceConfiguration config)
    {
        config.SetEntitySetAccessRule("*", EntitySetRights.All);
        config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
        config.UseVerboseErrors = true;
    }

    [WebGet]
    public IQueryable<Person> GetPeopleByName(string name)
    {
        WcfDataServiceContext context = this.CurrentDataSource;

        var match = from p in context.People
                    where p.FirstName == name
                    select p;

        return match;
    }

次のようにブラウザからカスタムメソッドにアクセスできます。

http://127.0.0.1:8080/DataService/WcfDataService.svc/GetPeopleByName?name='Daniel'

そのメソッドを呼び出して、SilverlightアプリケーションからPersonのリストを取得するにはどうすればよいですか?

Visual Studio 2012、Silverlight 5、.NETFramework4.0を使用しています。

4

2 に答える 2

0

Silverlight を使用している場合は、Silverlight アプリの元のサーバーとは異なるサーバーに接続できないため、相対 Uri を使用するだけです。WCF Data Services クライアントを使用する場合は、http: //forums.silverlight.net/t/208481.aspxを参照してください- それを示すコード スニペットがあります。ただし、AFAIK WCF Data Services クライアントは Service Operation をサポートしていないため、GetPeopleByName 関数の応答をクエリおよび解析できるように XmlReader を使用する必要がある場合があります。

于 2012-10-10T20:42:42.627 に答える
0

共有する前にそれを行いました。サービス参照あなたのドメイン:8080/DataService/WcfDataService.svc次に、Person オブジェクトの場合、Pesonのプロパティに[DataContract]属性を使用します[global::System.Runtime.Serialization.DataMemberAttribute()] これによりあなたが言うように、バス側へのプロキシをシリアライズして作成します。実際に機能するため、この属性に注意してください。

//Here is the interface attributes are important

 namespace AHBSBus.Web.Services
{
[ServiceContract]
public interface IChatService
{
    [OperationContract]
    bool LogIn(Guid userID,Guid roomID);

    [OperationContract]
    bool LogOut(Guid userID,Guid roomID);

    [OperationContract]
    IEnumerable<VW_CHATUSERDETAIL> GetLatestMessages(Guid userID,Guid roomID,Guid lastSyncMessageID);

    [OperationContract]
    bool SendMessage(Guid fromID, Guid roomID, Guid toID, string message);

    [OperationContract]
    IEnumerable<ChatUser> GetLoggedInUsers(Guid roomID);

    [OperationContract]
    bool IsLogin(Guid roomID,Guid userID);
}
}


//Implementation of service 

   [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  public partial class ChatService:IChatService
  {
    //Here goes 
  }
于 2012-10-11T08:39:59.347 に答える