Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法从本地访问WCF服务终结点_C#_.net_Web Services_Wcf - Fatal编程技术网

C# 无法从本地访问WCF服务终结点

C# 无法从本地访问WCF服务终结点,c#,.net,web-services,wcf,C#,.net,Web Services,Wcf,我是WCF开发的新手,我正在尝试创建一个托管在控制台应用程序中的WCF服务 我已经创建了WCF服务,并通过在IIS Express上运行它对其进行了测试。这样,就可以从http://localhost:5576/MyFirstService.svc。在服务中,我定义了一个GET端点/test/,以测试它是否工作。与邮递员一起访问url时http://localhost:5576/MyFirstService.svc/test/123,它将回显123 另一方面,我的托管WCF的控制台应用程序非常简

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

我已经创建了WCF服务,并通过在IIS Express上运行它对其进行了测试。这样,就可以从
http://localhost:5576/MyFirstService.svc
。在服务中,我定义了一个GET端点
/test/
,以测试它是否工作。与邮递员一起访问url时
http://localhost:5576/MyFirstService.svc/test/123
,它将回显
123

另一方面,我的托管WCF的控制台应用程序非常简单。我遵循了教程()。相关代码如下:

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的许多变体,但它似乎不起作用。

您的第一个服务是在IIS的上下文中运行的(是的,尽管它是express),因此这就是允许URL(REST样式)路由的原因,就像您在“test/123”示例中看到的那样

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

不要误解我的意思,如果通过SOAP调用,您的StudentService仍然可以正常工作,只是从REST的角度来看,Postman并不是这样使用的


有很多免费的工具可以像邮递员一样测试你的WCF服务。

如果我理解你的意思的话。我目前有两个选择。(选项1)使用SoapUI测试通过SOAP调用我的控制台托管的WCF。(选项2)在IIS或WAS中重新部署我的WCF服务以允许RESTful访问。我理解正确吗?