Я не знаю, к какой категории относится мой вопрос: ошибка программирования (с моей стороны) или ошибка IIS.
Я создал очень простую службу WCF с поддержкой Ajax из шаблона visual studio 2010. Вот код:
Файл 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;
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class EmployeeServices
{
[OperationContract]
public int DoWork()
{
return 1;
}
}
WEB.CONFIG (в отношении WCF)
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="EmployeeServicesAspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
<services>
<service name="EmployeeServices">
<endpoint address="" behaviorConfiguration="EmployeeServicesAspNetAjaxBehavior" binding="webHttpBinding" contract="EmployeeServices" />
</service>
</services>
</system.serviceModel>
И .SVC файл:
<%@ ServiceHost Language="C#" Debug="true" Service="EmployeeServices" CodeBehind="~/App_Code/EmployeeServices.cs" %>
Теперь проблема:
Когда я проверяю это на своем локальном компьютере на веб-странице с javascript, который выглядит следующим образом:
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="EmployeeServices.svc" />
</Services>
</asp:ScriptManager>
<div>
<script type="text/javascript">
function pass(result) {
alert(result);
}
function fail(result) {
alert(result);
}
$(document).ready(function () {
var service = new EmployeeServices();
service.DoWork(pass, fail, null);
});
</script>
</div>
</form>
Работает нормально, пока я не опубликую его на веб-сервере. Затем я получаю сообщение об ошибке «Служащие не определены».
Как мне устранить эту проблему? Я искренне ценю вашу помощь.