zoukankan      html  css  js  c++  java
  • WCF服务的IIS托管(网站托管)

    基本思路

    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:WcfService4inWcfService4.dll" resourceType="File" preCondition="bitness32" />
                <add name="test" path="*.dll" verb="*" modules="IsapiModule" scriptProcessor="Dhua555:WcfService4inWcfService4.dll" resourceType="File" preCondition="bitness32" />
            </handlers>
      </system.webServer>
  • 相关阅读:
    Linux tail 命令详解
    解决ArrayList的ConcurrentModificationException
    DOS简单实用的批量输出
    sqlite显示查询所消耗时间
    监听短信增删以及短信会话增删
    getContentResolver().query()方法selection参数使用详解(转)
    intellij编译报错:Internal error: com.intellij.psi.tree.IFileElementType cannot be cast to com.intellij.psi.tree.IStubFileElementType
    Android开发中如何改变RadioButton背景图片和文字的相对位置(转)
    php 获取系统时间
    优化android studio编译的apk大小
  • 原文地址:https://www.cnblogs.com/Lulus/p/7873240.html
Copyright © 2011-2022 走看看