无法从本地访问WCF服务端点

时间:2017-07-01 04:43:10

标签: c# .net web-services wcf

我是WCF开发的新手,我正在尝试创建一个托管在控制台应用中的WCF服务。

我已经创建了WCF服务并通过在IIS Express上运行它来测试它。这样,可以从http://localhost:5576/MyFirstService.svc访问WCF服务。在服务中,我定义了一个GET端点/test/<param>,只是为了测试它是否有效。在访问邮递员http://localhost:5576/MyFirstService.svc/test/123的网址后,它会回显123

另一方面,托管WCF的我的控制台应用程序非常简单。我按照教程(http://www.topwcftutorials.net/2014/05/wcf-self-hosting-console-application.html)进行了操作。相关代码如下:

Uri httpBaseAddress = new Uri("http://localhost:4321/StudentService");

//Instantiate ServiceHost
studentServiceHost = new ServiceHost(typeof(StudentService.StudentService), httpBaseAddress);

//Add Endpoint to Host
studentServiceHost.AddServiceEndpoint(typeof(StudentService.IStudentService), new WSHttpBinding(), "");            

//Metadata Exchange
ServiceMetadataBehavior serviceBehavior = new ServiceMetadataBehavior();
serviceBehavior.HttpGetEnabled = true;
studentServiceHost.Description.Behaviors.Add(serviceBehavior);

//Open
studentServiceHost.Open();
Console.WriteLine("Service is live now at : {0}", httpBaseAddress);
Console.ReadKey();

当我启动控制台应用程序并访问http://localhost:4321/StudentService时,我会看到关于wsdl的标准页面。但是,如果我尝试访问http://localhost:4321/StudentService/test/123,则会收到400错误请求错误。

我做得对吗?我应该用什么路径来到我的终点?我尝试了很多URL的变体,但似乎没有用。

1 个答案:

答案 0 :(得分:0)

您的第一项服务http://localhost:5576/MyFirstService.svc在IIS的上下文中运行(是的,即使它是快速的),这就是允许您在“test / 123”中看到的URL(REST样式)路由“例子。

但代码示例和发布的引用链接实际上是来自控制台应用程序的自托管服务,该应用程序不使用IIS或WAS(Windows激活服务),因此路由将不可用。

不要误解我的意思,如果通过SOAP调用,您的StudentService仍然可以正常工作,而不是从REST透视图中使用Postman。

SoapUI这样的免费工具就像Postman一样可以测试你的WCF服务。