2016-04-19 12 views
0

Azure Mobie App SDKを使用し、ODataクエリをサポートするバックエンドサービスをアップグレードしました。私は郵便配達員を使って依頼し、希望の返答を受け取ります。それは正常に動作しています。 Azure Mobile App SDKを使用するようにクライアントをアップグレードします。私が直面している問題は、クライアントSDKが生成されたURLにテーブルのハードコードされたを使用していることです。このコード:私は何とかtables一部を変更することはできhttp://{{host}}/api/local/sites?$filter=(updatedAt%20ge...クライアントでAzure Mobile AppサービスのURLを変更する

をGET

class SiteRepository 
{ 
    private MobileServiceClient client; 
    private IMobileServiceSyncTable<Site> siteTable; 

    private SiteRepository() 
    { 
     client = new MobileServiceClient("http://{{host}}/"); 
     Task.Run(() => InitLocalStoreAsync()); 
     siteTable = client.GetSyncTable<Site>(); 

     siteTable.PullAsync("Site", siteTable.CreateQuery()); 
    } 

    private async Task InitLocalStoreAsync() 
    { 
     if (!client.SyncContext.IsInitialized) 
     { 
      var store = new MobileServiceSQLiteStore("localstore.db"); 
      store.DefineTable<Site>(); 
      await client.SyncContext.InitializeAsync(store); 
     } 
    } 

    public List<Site> GetSites() 
    { 
     return Task.Run(() => siteTable.ToListAsync()).Result; 
    } 

はに要求を送信します。

http://{{host}}/tables/site$filter=(updatedAt%20ge ...

をGETしかし、私はそれがリクエストを送信します何かに?

更新は:要求は常に/テーブルのエンドポイントを使用し、IMobileServiceTableとIMobileServiceSyncTableで

[RoutePrefix("api/local/sites")] 
[MobileAppController] 
public class SiteController<T> : TableController<T> where T : Model.Entity 
{ 
    protected SiteService<T> service; 
    public BaseController(IEntityService<T> _service) 
    { 
     service = _service; 
    } 

    [Route("")] 
    [HttpGet] 
    [EnableQuery] 
    public virtual IQueryable<T> Get() 
    { 
     var entities = service.GetAll(); 
     if (entities == null || entities.Count() == 0) 
     { 
      return null; 
     } 

     return TableUtils.ApplyDeletedFilter(entities.AsQueryable(), Request.AreDeletedRowsRequested()); 
    } 
+0

カスタムAPIからコードを追加できますか? (おそらくSitesController) – SWilko

+0

SiteControllerコードを追加しましたが、問題とは関係ないと思います。 –

+0

'RoutePrefix'を' TableController'に追加して、それを行うために 'ApiController'から継承しなければならないと思っていませんでした。それで、あなたは手作りでオダタの良さを作り出さなければなりません。私は確信していません – SWilko

答えて

1

ここでは、バックエンドでSiteControllerです。この動作を変更するには、委任ハンドラをMobileServiceClientにアタッチし、リクエストURIを送信する前に変更します。

ここに、ログを作成する委任ハンドラの例を示します。このハンドラは、このコードを追加する場所を示しています。Log outgoing requests in mobile client

+1

ガイダンスのために多くのありがとう、それは働いた:) –

関連する問題