Question

J'ai essayé de mettre en œuvre un simple service web à l'aide de ServiceStack et Sitefinity V3.7sp3 net35.J'ai ajouté ServiceStack comme localhost/api en utilisant ce site web config.Après la mise en œuvre de la classe de service à l'aide de IService pour en obtenir tous les articles de Nouvelles matières et enregistrée le Mondial asax pour les routes.Le résultat est toujours à zéro les éléments.C'est très similaire à ce que d'autres post en Sf Forum.Modifier le content manager ou le fournisseur est toujours un retour de zéro éléments et zéro en tant que comte.Ma Sf est de permettre multilingue fr,fr..en utilisant un chemin.Beaucoup de être besoin d'être Asynchrone?.Quelqu'un peut-il m'aider à résoudre ce cas en utilisant servicestack de cours.

Ce qui concerne.

[Description("Find items by baseclass, or all default if no genre is provided")]
[RestService("/api/items")]
[RestService("/api/items/news")]
[RestService("/api/items/news/{provider}")]
[RestService("/api/items/news/{provider}/{language}")]
[AspNetCompatibilityRequirements(RequirementsMode =      AspNetCompatibilityRequirementsMode.Allowed)] 
public class Items
{
  public string provider { get; set; }
  public string language { get;set; }
  IList ItemsList{ get; set;  }  
}

/// <summary>
/// Summary description for NewsResponse
/// </summary>
public class ItemsResponse
{
   public ItemsResponse()
   {
   }
   public ResponseStatus ResponseStatus { get; set; } //Automatic exception handling
   public IList Items { get; set; }//return a list of objects
}

/// <summary>
/// Summary description for NewsServices
/// </summary>
public class ItemsService : ServiceStack.ServiceHost.IAsyncService<Items>
{
   //public object Execute(Items request)// with IService
   //{
   //    ItemsResponse response = new ItemsResponse();
   //    response.Items = ItemsList(request.provider,  request.language);//request.provider
   //    return response;
   //  ALWAYS ZERO AS RESPONSE
   //}

   //ERROR ON HANDLER ?    
   object IAsyncService<Items>.ExecuteAsync(Items request)
   {
      ItemsResponse response = new ItemsResponse();
      //if (request.provider != null)
      response.Items = ItemsList(request.baseclass, request.provider, request.language);//request.provider
      return response;    
    }

    public IList ItemsList(string provider, string language)
    {          
        if(provider==string.Empty)
            provider = NewsManager.DefaultContentProvider;
        if (language == string.Empty)
            language = "es";
        System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(language);
        NewsManager manager = new NewsManager(provider);
        //Get items from this language
        IList data = manager.Content.GetContent();
        return data;                    
    }
}
Était-ce utile?

La solution

Supprimer la /api à partir de votre RestService()'s. Donc, comme:

[RestService("/items")]
[RestService("/items/news")]
[RestService("/items/news/{provider}")]
[RestService("/items/news/{provider}/{language}")]

Ou votre url devrait être domain.com/api/api/items...

Vous avez testé votre site avec domain.com/api/metadata?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top