A Test WCF Service without anything of config.
Firstly . I am a fresh man of WCF . Maybe something i done looks like easy for you .but if you have any comments for me . i will be appreciated for that . thank u .
Recently when i was writing something simple enough WCF server testing program.
in my console app. firstly i had to add system.ServiceModel.dll of .net 4.0 in my computer system like all the others wcf app.
and i add code shown blow in the main method.
{
ServiceHost host = new ServiceHost(typeof(TestServiceImplement),
new Uri("http://localhost:8010/TestServices"));
try
{
// Open the service host to accept incoming calls
host.Open();
// The service can now be accessed.
Console.WriteLine("The service is ready.");
Console.WriteLine("Press <ENTER> to terminate service.");
Console.WriteLine();
Console.ReadLine();
// Close the ServiceHostBase to shutdown the service.
host.Close();
}
catch (CommunicationException commProblem)
{
Console.WriteLine("There was a communication problem. " + commProblem.Message);
Console.Read();
}
}
see ? i did not add anything of configurations . let 's what would be happen.
...
the console wrote the message like this :
"The service is ready."
"Press <ENTER> to terminate service."
well . it seems this kind of WCF service without any configurations works .
but . if you access the base uri defined in the main in web browser .
the wcf will show you a message that inform you can not get the metadata from the service you consumed.
so. what are u going to do with a WCF service without metadata ? that is the problem i really want to mention. we knew even the simplest app i wrote before is working without any exception .without metadata. we don't know the detail of how to communicate message to message between the client and server.
so . we had better follow the instructions shown in the above . add service behaviors . add mex endpoint....something like that . that will make sense of the service you created.
then . i add all the stuff that need to be in app.config. also you can done it in code
<configuration>
<system.serviceModel>
<services>
<!-- 注意: 服务名称必须与服务实现的配置名称相匹配。 如果name配置错误那么也会引起无法获取元数据,当然服务还是能启动-->
<service name="testWCFInConfig1.TestServiceImplement" behaviorConfiguration="MyServiceTypeBehaviors" >
<!-- 添加下列终结点。 -->
<!-- 注意: 服务必须有一个 http 基址以便添加此终结点。contract必须是和实际的一致,否则会启动失败,报找不到"xxx"contract -->
<endpoint contract="testWCFInConfig1.ITestService" binding="wsHttpBinding" address="Test" />
<endpoint contract="IMetadataExchange" binding="mexHttpBinding" address="mex" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyServiceTypeBehaviors" >
<!-- 将下列元素添加到服务行为配置中。 -->
<serviceMetadata httpGetEnabled="true" />
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
after configuration. access the WCF in browser again . everything is fine now.
posted on 2012-06-25 00:31 malaikuangren 阅读(303) 评论(0) 编辑 收藏 举报