最近想学习和使用WCF,于是下载调试微软WCF示例程序GettingStarted程序,总是不能成功,以此请教WCF。
     先说直接调试出现的问题:
    1、远程服务器返回了意外响应:(405)Method not allowed,此错误指向Client.cs中的
       static void Main()
        {
            // Create a client
            CalculatorClient client = new CalculatorClient();            // Call the Add service operation.
            double value1 = 100.00D;
            double value2 = 15.99D;
            double result = client.Add(value1, value2);       ---错误就指向这里
            Console.WriteLine("Add({0},{1}) = {2}", value1, value2, result);            // Call the Subtract service operation.
            value1 = 145.00D;
            value2 = 76.54D;
            result = client.Subtract(value1, value2);
            Console.WriteLine("Subtract({0},{1}) = {2}", value1, value2, result);
            client.Close();            Console.WriteLine();
            Console.WriteLine("Press <ENTER> to terminate client.");
            Console.ReadLine();
        }
     2、我到IIS中看了一下,有一虚拟目录:ServiceModelSample,该虚拟目录是自动生成的吧?

解决方案 »

  1.   

        我到网上四处查看了一下svcutil.exe等生成客户端代理的程序。此程序生成的程序为generatedClient.cs,这个程序中是怎样生成的啊?生成的程序generatedClient.cs中有如下的代码:
        [System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]
        [System.ServiceModel.ServiceContractAttribute(Namespace="http://Microsoft.ServiceModel.Samples", ConfigurationName="Microsoft.ServiceModel.Samples.ICalculator")]
        public interface ICalculator
        {
            
            [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Add", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/AddResponse")]
            double Add(double n1, double n2);
            
            [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Subtract", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/SubtractResponse")]
            double Subtract(double n1, double n2);
            
            [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Multiply", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/MultiplyResponse")]
            double Multiply(double n1, double n2);
            
            [System.ServiceModel.OperationContractAttribute(Action="http://Microsoft.ServiceModel.Samples/ICalculator/Divide", ReplyAction="http://Microsoft.ServiceModel.Samples/ICalculator/DivideResponse")]
            double Divide(double n1, double n2);
        }
      这里如果要手工修改,是否要将Action修改为本地的如为Http://localhost/serviceModelSample,具体怎样修改?
        
         我发现许多讲解WCF编程的书,都没有讲清具体怎样进行配置,都是拷贝人家微软MSDN中的内容,都让人看得懂,却还是不会做的感觉啊
      

  2.   

        而且,我发现,在Client项目中添加“添加 Web引用....”时,不能发现现有的Service服务,手动添加:Http://localhost/ServiceModelSample/service.svc时,提示:服务器程序不可用。
        浏览“此解决方案中的WEB服务”时,提示:当前解决方案时未找到WEB服务.
       这是怎样会事呢? 
      

  3.   

        大家平时都不用WCF么?