2012-07-16 2 views
2

Il semble que je ne puisse pas acheminer automatiquement mes services, MetaData affiche toutes les classes et tous les services disponibles, mais devrais-je aller dans/api/btbCustomerEvents Je reçois l'erreur de routage non gérée.ServiceStack MVC enregistrement automatique des routes

J'ai essayé:

[Alias("btbCustomerEvents")] 
[RestService("/btbCustomerEvents")] 
public class Btbcustomerevent : BaseModel 

mon apphost ressemble à ceci:

public class AppHost: AppHostBase 
{  
    public AppHost() : base("Energy System API", typeof(DepartmentService).Assembly) { } 

    public override void Configure(Funq.Container container) 
    { 
     //Set JSON web services to return idiomatic JSON camelCase properties 
     ServiceStack.Text.JsConfig.EmitCamelCaseNames = true; 

     //register all routes 
     Routes 
      .Add<Department>("/Departments") 
      .Add<Department>("/Departments/{Id}") 
      .Add<Paymentmethod>("/PaymentMethods") 
      .Add<Paymentmethod>("/PaymentMethods/{Id}") 
      .Add<MyExampleModel>("/MyExampleModel") 
      .Add<MyExampleModel>("/MyExampleModel/{Id}"); 

     //Change the default ServiceStack configuration 
     SetConfig(new EndpointHostConfig{ DebugMode = true, }); 

     container.Register<ICacheClient>(new MemoryCacheClient()); 
     container.Register<ISessionFactory>(c => 
      new SessionFactory(c.Resolve<ICacheClient>())); 

     ControllerBuilder.Current.SetControllerFactory(new FunqControllerFactory(container)); 
    } 

    public static void Start() 
    { 
     new AppHost().Init(); 
    } 

Je ne veux pas vraiment ajouter les routes pour tout, j'ai créé des fichiers TT qui créent les modèles à partir de la base de données, et ajoute également automatiquement les services de repos/style CRUD, il semble juste une honte que maintenant je dois ajouter chaque, et chaque itinéraire.

Quelqu'un at-il une solution pour cela?

grâce

Répondre

2

Oui, l'enregistrement de l'automatisation des routes est déjà intégrée dans ServiceStack. En utilisant la méthode d'extension Routes.AddFromAssembly() il enregistrera des itinéraires personnalisés pour tous les services dans les ensembles spécifiés (pour tous les verbes que vous avez mises en œuvre pour), par exemple:

// /{RequestDto} 
// /{RequestDto}/{Id} - if Id exists 
Routes.AddFromAssembly(typeof(Department).Assembly);    

Voir la implementation for Routes.AddFromAssembly() pour un modèle de la façon dont vous pouvez enregistrer automatiquement vos propres routes si vous avez des heuristiques différentes.

+0

Salut, merci d'avoir erreur: Détails d'exception: System.Reflection.AmbiguousMatchException: Les noms de propriété sont insensibles à la casse: DbaIndexdefraglog.ErrorMessage mais la casse et l'orthographe sont corrects? J'ai essayé avec le service aussi mais obtenez le même message d'erreur. J'ai mis le code dans AppHost/Configure juste avant les autres routes que j'ai faites, pourriez-vous être un peu plus précis si cela se passe, merci – davethecoder

+0

Ceci est un remplacement pour l'enregistrement manuel des routes. Par exemple, supprimez les routes ressemblant à/{RequestDto} 'et'/{RequestDto}/{Id} 'car la ligne de code ci-dessus le fait déjà pour chaque service des assemblys spécifiés. – mythz

+0

Salut merci, ouais je l'ai fait, il tombe, n'aime pas certaines des tables et je suis seulement capable de mettre à jour le code et pas la base de données jusqu'à présent, une chose que j'ai remarqué est cette base ("Energy System API" , typeof (DepartmentService). ne devrait pas avoir pointé vers le service, donc j'ai corrigé cela et modifié mes fichiers TT pour ajouter des liens RestService automatiquement, merci pour votre aide – davethecoder