成功托管服务后无法找到页面
本文关键字:服务 成功 | 更新日期: 2023-09-27 18:18:55
我有控制台应用程序作为主机和wcf库项目。当我想将应用程序托管到http://localhost:59350/GettingStarted/CalculatorService
时,它说无法找到该页。这段代码来自msdn教程http://msdn.microsoft.com/en-us/library/ms730935.aspx。
代码如下:
using GettingStartedLib;
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.Text;
using System.Threading.Tasks;
namespace GettingStartedHost
{
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:59350/GettingStarted");
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 the service.");
Console.WriteLine();
Console.ReadLine();
selfHost.Close();
}
catch (CommunicationException ce)
{
Console.WriteLine("An exception occured: {0}", ce.Message);
selfHost.Abort();
}
}
}
}
ICalculator
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace GettingStartedLib
{
[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 Devide(double n1, double n2);
}
}
CalculatorService
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace GettingStartedLib
{
public class CalculatorService : ICalculator
{
public double Add(double n1, double n2)
{
double result = n1 + n2;
Console.WriteLine("Recieved Add {0},{1}", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}
public double Subtract(double n1, double n2)
{
double result = n1 - n2;
Console.WriteLine("Recieved 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("Recieved Multiply {0},{1}", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}
public double Devide(double n1, double n2)
{
double result = n1 / n2;
Console.WriteLine("Recieved Devide {0},{1}", n1, n2);
Console.WriteLine("Return: {0}", result);
return result;
}
}
}
您无法使用浏览器访问您的服务,因为您使用了自托管。(与web service不同)
您可以使用wcftestclient来测试wcf服务,请阅读本文