2012-02-14 40 views
0

我試圖按照微軟WCF教程和我在這一步:http://msdn.microsoft.com/en-us/library/ms733133.aspx麻煩以下微軟WCF教程

不幸的是,當我運行此命令:

svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config http://localhost:8000/ServiceModelSamples/service 

它給了我一個404錯誤。該服務正在運行,我可以通過以下網址成功通過網絡瀏覽器訪問:http://localhost:8000/ServiceModelSamples/service

我在做什麼錯?如果它幫助我發佈了我在下面使用的示例主機的所有代碼。

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.ServiceModel; 
using System.ServiceModel.Description; 

namespace Microsoft.ServiceModel.Samples 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Uri BaseAddress = new Uri("http://locoalhost:8000/ServiceModelSamples/Service"); 
      ServiceHost selfHost = new ServiceHost(typeof(CalculatorService), BaseAddress); 

      try 
      { 
       selfHost.AddServiceEndpoint(typeof(ICalculator), new WSHttpBinding(), "CalculatorService"); 
       ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); 
       smb.HttpGetEnabled = true; 
       selfHost.Description.Behaviors.Add(smb); 

       selfHost.Open(); 
       Console.WriteLine("The service is ready."); 
       Console.WriteLine("Press <ENTER> to terminate service."); 
       Console.WriteLine(); 
       Console.ReadLine(); 
       selfHost.Close(); 
      } 
      catch (CommunicationException ce) 
      { 
       Console.WriteLine("An expection occurred: {0}", ce.Message); 
       selfHost.Abort(); 
      } 
     } 

     [ServiceContract(Namespace = "http://Microsoft.ServiceModel.Samples")] 
     public interface ICalculator 
     { 
      [OperationContract] 
      double Add(double n1, double n2); 

      [OperationContract] 
      double Subtract(double n1, double n2); 

      [OperationContract] 
      double Multiply(double n1, double n2); 

      [OperationContract] 
      double Divide(double n1, double n2); 
     } 

     public class CalculatorService : ICalculator 
     { 
      public double Add(double n1, double n2) 
      { 
       double result = n1 + n2; 
       Console.WriteLine("Received Add({0},{1})", n1, n2); 
       // Code added to write output to the console window. 
       Console.WriteLine("Return: {0}", result); 
       return result; 
      } 

      public double Subtract(double n1, double n2) 
      { 
       double result = n1 - n2; 
       Console.WriteLine("Received Subtract({0},{1})", n1, n2); 
       Console.WriteLine("Return: {0}", result); 
       return result; 
      } 

      public double Multiply(double n1, double n2) 
      { 
       double result = n1 * n2; 
       Console.WriteLine("Received Multiply({0},{1})", n1, n2); 
       Console.WriteLine("Return: {0}", result); 
       return result; 
      } 

      public double Divide(double n1, double n2) 
      { 
       double result = n1/n2; 
       Console.WriteLine("Received Divide({0},{1})", n1, n2); 
       Console.WriteLine("Return: {0}", result); 
       return result; 
      } 
     } 
    } 
} 

回答

2

的第一件事,錯的是你有一個錯字本地主機(您已locoalhost)

Uri BaseAddress = new Uri("http://locoalhost:8000/ServiceModelSamples/Service"); 

您也可以下載Fiddler @http://fiddler2.com/fiddler2/看交通和請求從客戶端代碼正在取得進展。這將提供下一個線索。排除http服務時,這是不可或缺的。

http://fiddler2.com/fiddler2/

此外,還要確保你的配置還是不錯的。參見:http://msdn.microsoft.com/en-us/library/ms734663.aspx

+0

< sigh >謝謝。 – 2012-02-14 04:18:07