WCF初次部署問題集錦

爲何這麼久才更新呢?不是說好一週一篇嗎?
...............好吧,我不知道說什麼......html


此次仍是按照問答的方式來展示,最後附上一個通用簡單的配置文件windows


問題: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」,檢測和從新安裝app


問題: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則不會發生這個問題。ide


WCF配置文件工具

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

<?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>
相關文章
相關標籤/搜索