我正在遵循此MSDN操作方法:host and run a basic windows WCF service
在本章中,通过提供参数而不是从配置文件中读取值来托管服务。
这可能不是我要使用的方案,我只是想了解会发生什么情况。
我的问题:服务正在运行,但在浏览器中看不到。
以前的步骤: -Visual Studio 2017,最新.NET,C#v。7.0 -创建了新的解决方案;添加了新项目:WCF库 -结果:一个带有3个源文件的DLL:1个与Service Contract的接口,此接口的一个实现和一个app.config -调试dll时使用此app.config -我更改了界面以添加一些计算器功能:加/减/乘/除
在此步骤中,我将服务托管为控制台应用程序。为此,需要以管理员身份运行Visual Studio。
将控制台应用程序添加到解决方案中,并添加以下代码。为简单起见,我删除了异常处理。
static void Main(string[] args)
{
// Step 1 Create a URI to serve as the base address.
Uri baseAddress = new Uri("http://localhost:8000/WcfGettingStarted/");
// Step 2 Create a ServiceHost instance
using (ServiceHost myHost = new ServiceHost(typeof(CalculatorService), baseAddress))
{
// Step 3 Add a service endpoint.
var addedServiceEndPoint = myHost.AddServiceEndpoint(
typeof(ICalculator),
new WSHttpBinding(),
"CalculatorService");
// Step 4 Enable metadata exchange.
ServiceMetadataBehavior serviceMetaDataBehaviour = new ServiceMetadataBehavior
{
HttpGetEnabled = true,
};
myHost.Description.Behaviors.Add(serviceMetaDataBehaviour);
// Step 5 Start the service.
myHost.Open();
Console.WriteLine("The service is running.");
Console.WriteLine("Press any key to terminate service.");
Console.ReadKey();
// Close the ServiceHostBase to shutdown the service.
myHost.Close();
}
}
现在,如果您阅读此代码,计算器服务的地址是什么?
根据“操作方法”,应为:
http://localhost:8000/WcfGettingStarted/CalculatorService
但是,如果我在浏览器中添加了该地址(启动调试器后),则它会以我的语言显示“ Deze pagina werkt niet”(此页面不起作用?)。与服务未运行或尝试使用其他地址时所用的文本不同。
问题:这是否意味着我有正确的地址?我应该期待:此页面无法正常工作吗?
答案 0 :(得分:0)
您正在创建一个以baseAddress作为Uri的ServiceHost,然后将serviceMetaDataBehaviour添加到ServiceHost。服务端点和元数据端点之间没有链接。
您应该能够在http://localhost:8000/WcfGettingStarted/
的浏览器中访问元数据终结点。为Metadata终结点提供服务的完整网址也将起作用
ServiceMetadataBehavior serviceMetaDataBehaviour = new ServiceMetadataBehavior
{
HttpGetEnabled = true,
HttpGetUrl = new Uri("http://localhost:8000/WcfGettingStarted/CalculatorService")
};