快速閱讀
如何用控制臺啟動一個wcf服務,已經(jīng)wcf的配置和在類庫中如何實現(xiàn) 。
wcf類庫
用vs新建一個類庫师骗,引用system.ServiceModel
定義接口實現(xiàn)服務契約和操作契約
[ServiceContract]
public interface IUser
{
[OperationContract]
string GetUserInfo();
}
定義方法實現(xiàn)接口,定義服務行為
[ServiceBehavior]
public class User:IUser
{
public string GetUserInfo()
{
return "username";
}
}
控制臺啟動服務
新建一控制臺應用 讨惩。引用之前新建的wcf類庫辟癌,同時在app.config配置wcf服務
<system.serviceModel>
<services>
<service name="hcbServiceB.User">
<!--設置服務節(jié)點,服務的地址直接采用基地址,使用basicHttpBinding-->
<endpoint address="" binding="basicHttpBinding" contract="hcbServiceB.IUser">
</endpoint>
<!-- ~1~設置元數(shù)據(jù)交換節(jié)點@1@-->
<!-- <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange">-->
<!-- </endpoint>-->
<host>
<baseAddresses>
<!--服務的基地址用來訪問獲取元數(shù)據(jù)-->
<add baseAddress="http://localhost:8057/User"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="HttpGetEnable">
<!--公開元數(shù)據(jù),正是部署時候應該去掉防止元數(shù)據(jù)泄露-->
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<bindings>
<basicHttpBinding>
<binding name="NoneSecurity">
<!--取消安全驗證-->
<security mode="None">
</security>
</binding>
</basicHttpBinding>
</bindings>
</system.serviceModel>
啟動服務
定義serviceHost荐捻, 能過wcf類找到servicehost 黍少,然后啟動。
static void Main(string[] args)
{
ServiceHost serivceHost = null;
Type ServiceType = typeof(IUser);
Type[] types = typeof(IUser).Assembly.GetTypes();
foreach (Type type in types)
{
if (type.IsInterface || type.IsEnum || type.IsAbstract || type.IsArray ||
!ServiceType.IsAssignableFrom(type))
continue;
serivceHost = new ServiceHost(type);
serivceHost.Opened += delegate
{
Console.WriteLine("[Info]{0} 啟動完畢... ", type);
};
serivceHost.Faulted += delegate { Console.WriteLine("[Warning]{0} 啟動出錯!", type); };
serivceHost.Open();
}
Console.ReadLine();
}
測試結果
參考:
wcf元數(shù)據(jù)相關:https://www.cnblogs.com/xfrog/archive/2010/05/16/1736771.html
友情提示
? 我對我的文章負責处面,發(fā)現(xiàn)好多網(wǎng)上的文章 沒有實踐厂置,都發(fā)出來的,讓人走很多彎路魂角,如果你在我的文章中遇到無法實現(xiàn)昵济,或者無法走通的問題∫熬荆可以直接在公眾號《愛碼農(nóng)愛生活 》留言访忿。必定會再次復查原因。讓每一篇 文章的流程都能順利實現(xiàn)囱挑。