я попробовал код, похожий на ваш, и я думаю, что, поскольку вы используете пустое пространство имен в
[ServiceContract(Namespace = "")]
, сгенерированный для прокси javascript доступен с использованием
ProductService.GetMainGridProductHtml
напрямуюи без пространства имен Application.Services
РЕДАКТИРОВАТЬ: пример кода:
в файле svc
:
<%@ ServiceHost Language="C#" Debug="true"
Service="Application.Services.ProductService"
Factory="System.ServiceModel.Activation.WebScriptServiceHostFactory"
CodeBehind="ProductService.svc.cs" %> // your cs file name may be different
на странице aspx вы должны иметь скриптменеджер и ссылка (измените ссылку на вашу службу):
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/Service1.svc" />
</Services>
</asp:ScriptManager>
в вашем файле web.config, когда вы добавили службу WCF с поддержкой WCF, VS2010 добавляет настройки модели servcie для WCF и AJAX: ваши имена классови пространства имен, вероятно, разные, это было создано на моей машине:
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="WebApplication1.Service1AspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="WebApplication1.Service1">
<endpoint address=""
behaviorConfiguration="WebApplication1.Service1AspNetAjaxBehavior"
binding="webHttpBinding" contract="WebApplication1.Service1" />
</service>
</services>
</system.serviceModel>
со всем этим на месте, вы должны иметь возможность вызывать службу на стороне клиента, используя ProductService.GetMainGridProductHtml()
.
(вы можететакже, как вы и ожидали, посмотрите в окне просмотра отладчика
, чтобы убедиться, что вы правильно генерируете javascript, перейдите по URL-адресу службы + / jsdebug, то есть http://localhost:3953/Service1.svc/jsdebug