2014-10-08 4 views
0

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

начало моего кода позади для файла веб-службы, 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.

ответ

1

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

enter image description here

 Смежные вопросы

  • Нет связанных вопросов^_^