我正在学习WCF,我开始创建一个非常基本的主机应用程序,它使用以下一种方法定义一个类:
[ServiceContract()]
public interface IMath
{
[OperationContract]
int Add(int a, int b);
}
public class MathCalcs : IMath
{
public MathCalcs()
{
Console.WriteLine("Service await two numbers...");
}
public int Add(int a, int b)
{
return a + b;
}
}
这就是我配置App.config文件的方式:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
<service name="ConsoleHost.MathCalcs" behaviorConfiguration="MathServiceMEXBehavior">
<endpoint address="http://localhost:8080/MathCalcs"
binding="basicHttpBinding"
contract="ConsoleHost.IMath"/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/MathCalcs"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MathServiceMEXBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
</configuration>
然后我从Main
using (ServiceHost host = new ServiceHost(typeof(MathCalcs)))
{
host.Open();
Console.WriteLine("***The service is ready***");
}
Console.ReadLine();
但它无法通过URI http://localhost:8080/MathCalcs查看服务的元数据,我确信我正在按照我正在阅读的书中的步骤进行操作,并且作为前面的示例正常工作,唯一的区别是我没有在独立的类库中分离服务逻辑(接口和类)。 我错过了什么?
答案 0 :(得分:2)
以下代码行
Console.ReadLine();
必须在using子句的大括号内! 完成后,重试查找WSDL元数据。
答案 1 :(得分:1)
以下是一篇相关文章,我认为可能会引导您朝着正确的方向前进。