我是WCF的新手.我已经创建了一个简单的自托管服务并添加了app.config但是当我在浏览器中键入地址时,它没有向我显示我们在创建服务时获得的服务页面http:// localhost:8067 / WCFService它没有显示我们运行服务时显示的服务.
但是当我尝试在public static void main而不是app.config中添加基本服务时,它工作得很好,没有得到yy ??谁能帮帮我吗?
以下是手动添加的app.config文件:
<configuration>
<system.serviceModel>
<services>
<service name="SelfHostedWCFService.WCFService">
<endpoint
address="http://localhost:8067/WCFService"
binding="wsHttpBinding"
contract="SelfHostedWCFService.IWCFService">
</endpoint>
</service>
</services>
</system.serviceModel>
</configuration>
以下是Program.cs:
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(SelfHostedWCFService.WCFService));
host.Open();
Console.WriteLine("Server is Running...............");
Console.ReadLine();
}
以下是手动添加的界面文件:
namespace SelfHostedWCFService
{
[ServiceContract]
interface IWCFService
{
[OperationContract]
int Add(int a, int b);
[OperationContract]
int Sub(int a, int b);
[OperationContract]
int Mul(int a, int b);
}
}
以下是手动添加的service.cs文件:
namespace SelfHostedWCFService
{
class WCFService:IWCFService
{
public int Add(int a, int b) { return (a + b); }
public int Sub(int a, int b) { return (a - b); }
public int Mul(int a, int b) { return (a * b); }
}
}
我的app.config或其他一些概念有问题吗?
最佳答案 乍一看似乎一切都好 – 你确定服务没有运行吗?
在没有发布任何元数据的情况下,您无法使用WCF Test Client测试服务,也无法为其生成客户端代理….
因此,我建议将服务元数据发布添加到您的服务中,这样做,我能够测试您的代码,并且它可以完美地运行.
要添加元数据,请将配置更改为:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="Metadata">
<serviceMetadata />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="SelfHostedWCFService.WCFService" behaviorConfiguration="Metadata">
<endpoint
address="http://localhost:8067/WCFService"
binding="wsHttpBinding"
contract="SelfHostedWCFService.IWCFService" />
<endpoint address="http://localhost:8067/WCFService/mex"
binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
</configuration>
即使使用此配置,导航到URL时也不会看到任何服务页面 – 但服务已启动并运行 – 只需使用WCF Test Client并亲自查看!