2010-11-19 23 views
0

J'essaye d'installer un service Web de Spring.net mais continue à recevoir un message d'erreur que je ne peux pas comprendre.Comment puis-je faire fonctionner mon service Web Spring.net?

Erreur:

System.NotSupportedException: Target 'target' of type 'Spring.Objects.Factory.Support.RootWebObjectDefinition' does not support methods of 'StudentRegistration.Services.IBoundaryService'. 
    at Spring.Util.AssertUtils.Understands(Object target, String targetName, Type requiredType) 
    at HelloWorldExporter.GetAllBounds() 

code:

public interface IBoundaryService { 
     XmlDocument GetAllBounds(); 
    } 

    public class BoundaryService :IBoundaryService 
    { 
     public virtual IBoundaryDao BoundaryDao { get; set; } 

     public virtual XmlDocument GetAllBounds() 
     { 
      XmlDocument xmlDoc = new XmlDocument(); 
      xmlDoc.LoadXml("<test>ok</test>"); 
      return xmlDoc; 
     } 
    } 

Configuration:

<object name="BoundaryService" type="StudentRegistration.Services.BoundaryService, StudentRegistration" 
     abstract="true"> 
    </object> 

    <object id="BoundaryExporter" type="Spring.Web.Services.WebServiceExporter, Spring.Web"> 
    <property name="TargetName" value="BoundaryService"/> 
    <property name="Namespace" value="http://fake/services"/> 
    <property name="Description" value="something"/> 
    <property name="MemberAttributes"> 
     <dictionary> 
     <entry key="GetAllBounds"> 
      <object type="System.Web.Services.WebMethodAttribute, System.Web.Services"> 
      <property name="Description" value="something."/> 
      <property name="MessageName" value="GetAllBounds"/> 
      </object> 
     </entry> 
     </dictionary> 
    </property> 
    </object> 

Que dois-je essayer de clarifier cela?

Répondre

2

La référence Spring.NET est erronée sur la déclaration XML (j'ai eu le même problème il y a quelques jours), ou devrais-je dire que ce n'est pas très clair.

<object name="BoundaryService" 
     type="StudentRegistration.Services.BoundaryService, StudentRegistration" 
     abstract="true" /> 

la déclaration ci-dessus applique lorsque vous avez un .asmx service réel

lorsque vous avez un PONO que vous exportez comme WebService en utilisant Spring.Web.Services.WebServiceExporter l'objet qui sera exportée doit être déclarée comme:

<object id="BoundaryService" 
     type="StudentRegistration.Services.BoundaryService, StudentRegistration" 
/> 

La propriété target du WebServiceExporter s'applique au id d'un objet déclaré, la partie abstraite n'est pas requise car Spring.NET prend le rôle générant le service Web.

Notez que votre nom de service exposé (avec votre cfg actuelle) sera (..)/BoundaryExporter.asmx

Edit: La déclaration de configuration pour les services Web standard .asmx utilisant le nom , les attributs de type semble être cassé, au moins pour version printemps 1.3.0.20349