2011-10-03 12 views
5

Ho provato questo sia su linux che su os x e sto avendo lo stesso problema. Questo è MonoDevelop 2.6 con la versione stabile più recente di Mono. Sul mio Mac è v 2.10.2.Servizio WCF in Mono non accessibile?

Questo funzionava per me qualche giorno fa. Vorrei puntare il mio browser su "http: // localhost: 8000/number/test" e riceverei un messaggio che diceva qualcosa come "Nella riga di comando, digita svcutil http: // localhost: 8000/number/test [somethingmore] "

Ora il messaggio che ricevo sia su Linux e Mac nel browser è:

<Fault xmlns="http://schemas.microsoft.com/ws/2005/05/envelope/none"> 

a:InternalServiceFault il server non è in grado di elaborare la richiesta a causa di un errore interno. Il server potrebbe essere in grado di restituire dettagli delle eccezioni (dipende dalle impostazioni del server).

Ciò usata per funzionare, quindi non sono sicuro se mi manca qualcosa di importante o se qualcosa non va con mono o cosa. Spero che tu abbia un'idea. Questo è tutto più direttamente dal tutorial di MSDN (con alcune modifiche).

(Per chi lo sa, sono consapevole che fino ad ora non è possibile salvare lo stato perché non è ancora impostato per le sessioni, sto lavorando per arrivarci quando ho ricevuto questo errore).

Ecco le mie classi:

using System; 
using System.ServiceModel; 

namespace NumberService 
    { 
[ServiceContract] 
public interface INumberService 
{ 
    [OperationContract] 
    void Add(int val); 

    [OperationContract] 
    void Subtract(int val); 

    [OperationContract] 
    int Result(); 
} 
} 

using System; 

namespace NumberService 
{ 
public class NumberService : INumberService 
{ 
    private int val = 1; 


    public NumberService() 
    { 
     Console.WriteLine("NumberService created."); 
    } 

    public void Add(int val) 
    { 
     this.val += val;  
    } 

    public void Subtract(int val) 
    { 
     this.val -= val; 
    } 


    public int Result() 
    { 
     return val; 
    } 
} 
} 



using System; 
using System.ServiceModel; 
using System.ServiceModel.Description; 

namespace NumberService 
{ 
class MainClass 
{ 
    public static void Main (string[] args) 
    { 
     Uri uri = new Uri("http://localhost:8000/number/test"); 

     ServiceHost selfHost = new ServiceHost(typeof(NumberService), uri); 


     try 
     { 


      // Step 3 of the hosting procedure: Add a service endpoint. 
      selfHost.AddServiceEndpoint(
       typeof(INumberService), 
       new WSHttpBinding(SecurityMode.None), 
       "NumberService"); 


      // Step 4 of the hosting procedure: Enable metadata exchange. 
      ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
      smb.HttpGetEnabled = true; 
      selfHost.Description.Behaviors.Add(smb); 

      // Step 5 of the hosting procedure: Start (and then stop) the service. 
      selfHost.Open(); 
      Console.WriteLine("The service is ready."); 
      Console.WriteLine("Press <ENTER> to terminate service."); 
      Console.WriteLine(); 
      Console.ReadLine(); 

      // Close the ServiceHostBase to shutdown the service. 
      selfHost.Close(); 
     } 
     catch (CommunicationException ce) 
     { 
      Console.WriteLine("An exception occurred: {0}", ce.Message); 
      selfHost.Abort(); 
     } 


    } 


} 
} 
+0

Ugh funziona su Windows 7 - Visual Studio E Mono –

risposta

1

Hai cercato di accedere al servizio, quando si esegue il debug? Da InternalServiceFault sembra che qualcosa stia causando il fallimento del servizio.

Nicklas