У меня есть веб-приложение на C #, созданное с использованием Visual Studio Community. В приложении я создал службу WCF (с поддержкой ajax), которая находится в папке [Services] и называется Service1.svc. Приложение отлично работает локально.
Я успешно загрузил приложение в общую учетную запись хостинга GoDaddy. Однако вызовы JavaScript [Service1.svc] приводят к следующим ошибкам:
- Не удалось загрузить ресурс: сервер ответил статусом 404 (не найден) http://XXXXX.COM/WebApplication1/Services/Service1.svc/js
- Uncaught ReferenceError: Service1 не определен]
Вышеупомянутые ошибки возникают в следующей строке JavaScript:
var myService = new Service1 ();
Почему он пытается достичь "Service1.svc / js"? Как мне решить эту проблему?
Еще один вопрос, который у меня есть, - что я должен указать для пространства имен в [ServiceContract (Namespace = "")]?
Service1.svc:
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;
namespace WebApplication1.Services
{
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1
{
[OperationContract]
public string DoWork(string m)
{
return m;
}
}
}
Часть Site.Master
....
<asp:ScriptManager runat="server">
<Services>
<asp:ServiceReference Path="~/Services/Service1.svc" />
</Services>
....
Default.aspx
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication1._Default" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="CallMyWCF();" />
<script>
function CallMyWCF() {
var myService = new Service1();
myService.DoWork("hello world", onSuccess, null, null);
}
function onSuccess(result) {
alert(result);
}
</script>
</asp:Content>
Часть Web.Config:
<configuration>
....
<system.web>
<customErrors mode="Off" />
<trust level="Full" />
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="WebApplication1.Services.Service1AspNetAjaxBehavior">
<enableWebScript />
</behavior>
</endpointBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
<services>
<service name="WebApplication1.Services.Service1">
<endpoint address="" behaviorConfiguration="WebApplication1.Services.Service1AspNetAjaxBehavior"
binding="webHttpBinding" contract="WebApplication1.Services.Service1" />
</service>
</services>
</system.serviceModel>
....