WCF初次部署问题集锦

为什么这么久才更新呢?不是说好一周一篇吗?
...............好吧,我不知道说什么......


这次还是按照问答的方式来展现,最后附上一个通用简单的配置文件


问题:HTTP 错误 500.19 - Internal Server Error,无法读取配置节“protocolMapping”,因为它缺少节声明。
解决:Web.config文件中有protocolMapping节点, 发现在IIS部署时使用了.NET 2.0的应用程序池. 将其改为使用.NET 4.0的AppPool后正常


问题:HTTP 错误 404.3 - Not Found,由于扩展配置问题而无法提供您请求的页面。如果该页面是脚本,请添加处理程序。如果应下载文件,请添加 MIME 映射。
解决:打开“cmd”命令工具行,输入“cd c:\windows\Microsoft.Net\Framework\v3.0\Windows Communication Foundation\”,然后输入“ServiceModelReg -i”,检测和重新安装


问题:HTTP 错误 500.21 ,在这个"svc-Integrated"处理器列表有一个错误的模块"ManagedPipelineHandler"
解决:打开“Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts”下的命令提示程序,32位系统打开32位,64位系统打开64位。输入“aspnet_regiis.exe -iru”,然后安装
原因:这个问题通常发生在先装visualstudio后装IIS的WCF HTTP 激活模块,如果先装IIS后装visualstudio则不会发生这个问题。


WCF配置文件

原文链接:http://www.cnblogs.com/iamlilinfeng/archive/2012/10/02/2710224.html

<?xml version="1.0"?>
<configuration>
  <system.serviceModel>

    
    <!--服务-->
    <services>
      <!--name:名称空间.类型名-->
      <!--behaviorConfiguration:behavior的名称,请看behavior配置节的名称-->
      <service name="WCFLibrary.User" behaviorConfiguration="MyBehavior">
        <host>
          <baseAddresses>
            <!-- 每种传输协议的baseAddress,用于跟使用同样传输协议Endpoint定义的相对地址组成完整的地址,
                 每种传输协议只能定义一个baseAddress。HTTP的baseAddress同时是service对外发布服务说明页面的URL -->
            <add baseAddress="http://localhost:8732/Design_Time_Addresses/WCFLibrary/Service/"/>
          </baseAddresses>
        </host>
        <!-- 除非完全限定,否则地址将与上面提供的基址相关,每个服务可以有多个Endpoint -->
        <!-- Address:指定这个Endpoint对外的URI,这个URI可以是个绝对地址,也可以是个相对于baseAddress的
                      相对地址。如果此属性为空,则这个Endpoint的地址就是baseAddress-->
        <!--bindingConfiguration:binding的名称,请看binding配置节的名称-->
        <endpoint address="" binding="wsHttpBinding" contract="WCFLibrary.IUser" bindingConfiguration="myHttpBinding">
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <!-- 此终结点不使用安全绑定,应在部署前确保其安全或将其删除-->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>

    
    <!--绑定-->
    <bindings>
      <wsHttpBinding>
        <binding name="myHttpBinding">
          <security mode="None">
            <message clientCredentialType="Windows" />
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

    
    <!--行为-->
    <behaviors>
      <serviceBehaviors>
        <behavior name="MyBehavior">
          <!-- httpGetEnabled - bool类型的值,表示是否允许通过HTTP的get方法获取sevice的WSDL元数据 -->
          <serviceMetadata httpGetEnabled="True"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>
    
  </system.serviceModel>
</configuration>


你可能感兴趣的:(config,WCF)