2014-06-30 57 views
0

我有一個簡單的WCF服務,它從jquery接收一些數據。呼叫WCF服務本地工作,但不在服務器上404

服務工作在本地主機上正常,但在IIS 7.5託管我將返回404錯誤

我看過這裏所有的其他問題,但不能找到解決方案。

我的jQuery的樣子:

function SaveBannerData(bannerArray) { 
$.ajax({ 
    type: "POST", 
    url: "http://xxx.xxx.xx/StatService.svc/SaveBannerStat", 
    data: "{\"pageBanners\":" + JSON.stringify(bannerArray) + "}", 
    contentType: "application/json; charset=utf-8", 
    dataType: "json", 
    processData: true, 
    success: function (data, status, jqXHR) {}, 
    error: function (xhr) { bannerFailed(xhr)} 
}); 

}

我的WCF,如:

namespace Comito.Portal.DataService 
{ 
[ServiceContract(Namespace = "")] 
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
public class StatService 
{ 
    // To use HTTP GET, add [WebGet] attribute. (Default ResponseFormat is WebMessageFormat.Json) 
    // To create an operation that returns XML, 
    //  add [WebGet(ResponseFormat=WebMessageFormat.Xml)], 
    //  and include the following line in the operation body: 
    //   WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml"; 
    [OperationContract] 
    [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] 

    public void DoWork(List<BannerStat> pageBanners) 
    { 
     List<Comito.LokalPortalen.Domain.Entity.Advertice.AdverticeStat> insertData = new List<LokalPortalen.Domain.Entity.Advertice.AdverticeStat>(); 
     foreach (BannerStat item in pageBanners) 
     { 
      Comito.LokalPortalen.Domain.Entity.Advertice.AdverticeStat adverticeStat = new LokalPortalen.Domain.Entity.Advertice.AdverticeStat(); 
      adverticeStat.AdStatType = LokalPortalen.Domain.Enums.AdStatType.View; 

      adverticeStat.Advertice = item.dataAd > 0 ? new Comito.LokalPortalen.Domain.Entity.Advertice.Ad { ID = item.dataAd } : null; 
      adverticeStat.AdZone = item.dataZone > 0 ? new Comito.LokalPortalen.Domain.Entity.Advertice.AdZone { ID = item.dataZone } : null; 
      adverticeStat.StatDateTime = DateTime.Now; 
      insertData.Add(adverticeStat);     
     } 
     Comito.LokalPortalen.DataStore.Repositories.Advertice.AdverticeStat.UpdateAllNoSession(insertData); 
     return; 
    } 
    [DataContract] 
    public class BannerStat 
    { 
     [DataMember] 
     public int dataType { get; set; } 
     [DataMember] 
     public int dataZone { get; set; } 
     [DataMember] 
     public int dataAd { get; set; } 
    } 
} 

}

+0

哪裏是'SaveBannerStat'方法之間準確的區別? –

+0

對不起 - DoWork應該是SaveBannerStat – user2435866

回答

0

如果你想打電話給跨域WCF服務的話,你必須在你的WCF服務中允許跨域訪問,否則你會得到錯誤。在這裏,我分享參考網址,讓WCF服務跨域

http://www.dotnet-tricks.com/Tutorial/wcf/X8QN260412-Calling-Cross-Domain-WCF-Service-using-Jquery.html

另外我分享1個更多博客網址是幫助你瞭解jQuery的AJAX和JSONP調用。這將更加有助於理解AJAX和JSONP方法

http://www.bendewey.com/index.php/186/using-jsonp-with-wcf-and-jquery

+0

問題是我的Windows Server 2008使用.net Framework 3.5.1功能而不是4.5? – user2435866

+0

不,它與服務器或框架無關 –

+0

認爲它與http://stackoverflow.com/questions/20784908/wcf-net-4-5-on-windows-server-2008-r2?answertab=active#有關標籤頂部 – user2435866

相關問題