Служба WCF работает в режиме отладки VS, а не при публикации в IIS.

У меня есть сайт, который включает службу WCF (с поддержкой AJAX). Все работает при запуске в режиме отладки в Visual Studio. Когда я публикую сайт на сервере IIS, служба WCF оказывается недоступной. Я получаю ошибку 404 при попытке загрузить файл javascript, созданный веб-службой.

Начало моего кода для файла веб-службы, SqlAjax.cs:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
using System.Web.Script.Serialization;

[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class SqlAjax
{

Мой web.config:

<?xml version="1.0"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false"/>
  </system.webServer>
  <connectionStrings>
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.5.1">
      <assemblies>
        <add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
        <add assembly="System.Web.DataVisualization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
      </assemblies>
    </compilation>
    <httpRuntime targetFramework="4.5.1"/>
  </system.web>
  <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="SqlAjaxAspNetAjaxBehavior">
          <enableWebScript/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>
    <services>
      <service name="SqlAjax">
        <endpoint address="" behaviorConfiguration="SqlAjaxAspNetAjaxBehavior" binding="webHttpBinding" contract="SqlAjax"/>
      </service>
    </services>
  </system.serviceModel>
</configuration>

В моем default.aspx я включил:

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnableCdn="True">
        <Scripts>
            <asp:ScriptReference Path="~/Scripts/jquery-2.1.1.min.js" />
            <asp:ScriptReference Path="~/Scripts/jquery-ui.min-1.11.1.js" />
        </Scripts>
        <Services>
            <asp:ServiceReference Path="~/WebServices/SqlAjax.svc" />
        </Services>
    </asp:ScriptManager>

Используя Visual Studio 2013, когда я запускаю сайт в режиме отладки, источник страницы включает:

<script src="WebServices/SqlAjax.svc/jsdebug" type="text/javascript"></script>

Я могу просмотреть этот файл, и он включает в себя функции, которые я добавил в службу.

Если я публикую сайт на сервере IIS 8.5, источник страницы включает:

<script src="WebServices/SqlAjax.svc/js" type="text/javascript"></script>

Однако это возвращает ошибку 404.


person Chris Purves    schedule 08.10.2014    source источник


Ответы (1)


Я смог найти решение. Мне нужно было включить функции служб WCF в функциях Windows. В установке по умолчанию для сервера было снято 4/5.

введите здесь описание изображения

person Chris Purves    schedule 09.10.2014