在 IIS 8.5 上部署 WCF

问题描述:

我正在尝试在 IIS 8.5 上部署 IIS 服务应用程序,但每次我尝试通过 http://localhost/test/WCFService.svc 连接到服务时,我都会看到以下屏幕:

I am attempting to deploy a IIS service application on IIS 8.5 but each time I attemp to connect to the service via http://localhost/test/WCFService.svc I get the following screen:

当我去打开或关闭Windows功能时,我有以下内容:

When I go to turn Windows features On or OFF I have the following:

我的 web.config 如下所示:

My web.config looks as follows:

<?xml version="1.0"?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" targetFramework="4.5" />
    <httpRuntime targetFramework="4.5"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name ="MessageServaceBehavior">
          <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>

    </behaviors>
    <services>

      <service name ="WCF_Connection.WCFService" behaviorConfiguration="MessageServaceBehavior">

        <host>
          <baseAddresses>
            <add baseAddress="http://10.0.5.32:58632/WCF_Service/"/>
          </baseAddresses>
        </host>
        <endpoint name ="getMessage" address="" binding="basicHttpBinding" contract="WCF_Connection.IWCFService"/>
         <!--<endpoint name ="MessgaeServiceMex" address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>-->        

      </service>
    </services>

   <protocolMapping>
        <add binding="basicHttpsBinding" scheme="https" />
    </protocolMapping>    
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
 <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>

       <!-- To browse web app root directory during debugging, set the value below to true.
        Set to false before deployment to avoid disclosing web app folder information.-->

    <directoryBrowse enabled="true"/>
  </system.webServer>

</configuration>

这是什么原因造成的,我该如何解决这个问题?

What causes this and how can i fix this problem?

您可能缺少 WCF HTTP 激活功能.它位于 Windows 功能屏幕的不同部分(请看下面的屏幕),据我所知,在安装 IIS 时默认情况下它没有启用.

You are probably missing WCF HTTP activation feature. It is in different section of Windows Feature screen (look at the screen below) and as far as I know it is not enabled by default when you install IIS.