基本思路
1、新建WCF应用程序
2、注册路由(可省略,则用/….svc/….访问)
配置文件
?<appSettings> ???<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> ?</appSettings> ?<system.web> ???<compilation debug="true" targetFramework="4.5.2" /> ???<httpRuntime targetFramework="4.5.2"/> ?</system.web> ?<system.serviceModel> ???<bindings> ?????<webHttpBinding> ???????<binding name="NewBinding0" /> ?????</webHttpBinding> ???</bindings> ???<services> ?????<service name="WcfService4.Service1"> ???????<endpoint address="/service" behaviorConfiguration="web" binding="webHttpBinding" ?????????bindingConfiguration="" contract="WcfService4.IService1" /> ?????</service> ???</services> ???<behaviors> ?????<serviceBehaviors> ???????<behavior> ?????????<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false --> ?????????<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/> ?????????<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> ?????????<serviceDebug includeExceptionDetailInFaults="false"/> ???????</behavior> ?????</serviceBehaviors> ?????<endpointBehaviors> ???????<behavior name="web"> ?????????<webHttp /> ???????</behavior> ?????</endpointBehaviors> ???</behaviors> ???<!--<protocolMapping> ???????<add binding="basicHttpBinding" scheme="http" /> ???</protocolMapping>--> ???<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> ?</system.serviceModel> ?<system.webServer> ???<modules runAllManagedModulesForAllRequests="true"/> ???<!-- ???????若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。 ???????在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。 ?????--> ???<directoryBrowse enabled="true"/> ?</system.webServer>
访问uri:http://localhost:27472/Service1.svc/service/GetData/1
3、写接口和.svc(服务) 与WCF库完全相同
4、Release模式下生成项目并发布(避免源代码暴露)
5、IIS下托管
托管成网站(添加网站),确定端口
访问:http://localhost:端口号/Service1.svc/service/GetData/1
localhost可改为IP地址
注意
服务引用BLL、DAL+EF之类的,引用项目,并把相关配置拷贝到最后服务的配置文件里面
比如,数据库连接字符串,EF相关配置,其他功能授权相关内容等等
配置文件参考
服务器发布后的配置文件:(Web.config) ?<appSettings> ???<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> ?</appSettings> ?<system.web> ???<compilation debug="true" targetFramework="4.5" /> ???<httpRuntime targetFramework="4.5" /> ?</system.web> ?<system.serviceModel> ???<bindings> ?????<webHttpBinding> ???????<binding name="NewBinding0" /> ?????</webHttpBinding> ???</bindings> ???<services> ?????<service name="WcfService4.Service1"> ???????<endpoint address="/service" behaviorConfiguration="web" binding="webHttpBinding" bindingConfiguration="" contract="WcfService4.IService1" /> ?????</service> ???</services> ???<behaviors> ?????<serviceBehaviors> ???????<behavior> ?????????<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false --> ?????????<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /> ?????????<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 --> ?????????<serviceDebug includeExceptionDetailInFaults="false" /> ???????</behavior> ?????</serviceBehaviors> ?????<endpointBehaviors> ???????<behavior name="web"> ?????????<webHttp /> ???????</behavior> ?????</endpointBehaviors> ???</behaviors> ???<!--<protocolMapping> ???????<add binding="basicHttpBinding" scheme="http" /> ???</protocolMapping>--> ???<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /> ?</system.serviceModel> ?<system.webServer> ???<modules runAllManagedModulesForAllRequests="true" /> ???<!-- ???????若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。 ???????在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。 ?????--> ???<directoryBrowse enabled="true" /><!--以下是IIS托管后自动添加的部分--> ???????<handlers> ???????????<remove name="ISAPI-dll" /> ???????????<add name="test2" path="*.svc" verb="*" modules="IsapiModule" scriptProcessor="D:\WcfService4\bin\WcfService4.dll" resourceType="File" preCondition="bitness32" /> ???????????<add name="test" path="*.dll" verb="*" modules="IsapiModule" scriptProcessor="Dhua555:\WcfService4\bin\WcfService4.dll" resourceType="File" preCondition="bitness32" /> ???????</handlers> ?</system.webServer>
WCF服务的IIS托管(网站托管)
原文地址:http://www.cnblogs.com/Lulus/p/7873240.html