2011-10-03 15 views
5

मैंने लिनक्स और ओएस एक्स दोनों पर यह कोशिश की है और मुझे एक ही समस्या है। मोनो के सबसे हालिया स्थिर संस्करण के साथ यह मोनो डेवलप 2.6 है। मेरे मैक पर v 2.10.2 है।मोनो में डब्ल्यूसीएफ सेवा सुलभ नहीं है?

यह कुछ दिनों पहले मेरे लिए काम करता था। मैं अपने ब्राउज़र को "http: // localhost: 8000/number/test" पर इंगित करूंगा और एक संदेश प्राप्त होगा जो "कमांड लाइन में, svcutil http: // localhost टाइप करें: 8000/संख्या/test [somethingmore] "

अब संदेश मैं ब्राउज़र में दोनों लिनक्स और मैक पर मिलता है:

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

a:InternalServiceFault सर्वर में आंतरिक त्रुटि के कारण अनुरोध को संसाधित करने में असमर्थ था। सर्वर अपवाद विवरण वापस करने में सक्षम हो सकता है (यह सर्वर सेटिंग्स पर निर्भर करता है)।

यह काम करता था, इसलिए मुझे यकीन है कि अगर मैं कुछ महत्वपूर्ण याद कर रहा हूँ नहीं कर रहा हूँ या कुछ और मोनो या क्या के साथ कुछ गलत है अगर। मुझे उम्मीद है कि आपके पास एक विचार है। यह एमएसडीएन ट्यूटोरियल से कुछ बहुत सीधे है (कुछ बदलावों के साथ)।

(उन लोगों के लिए, मुझे पता है कि यह अब तक राज्य को सहेज नहीं सकता है क्योंकि यह अभी तक सत्रों के लिए स्थापित नहीं है, मैं इस त्रुटि को प्राप्त करने के लिए वहां काम करने के लिए काम कर रहा था)।

यहाँ मेरी वर्ग हैं:

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

उह यह विंडोज 7 पर काम करता है - विजुअल स्टूडियो और मोनो –

उत्तर

1

आप सेवा का उपयोग करने की कोशिश की जब आप डीबग कर रहे हैं है? InternalServiceFault से ऐसा लगता है कि आपकी सेवा विफल होने के कारण कुछ ऐसा हो रहा है।

निकलास

संबंधित मुद्दे