簡體   English   中英

手動創建啟用JSON的WCF Svc服務

[英]Creating a JSON enabled WCF Svc service manually

如何通過覆蓋createhost函數來創建適當的啟用JSON的WCF svc服務?

這是我嘗試過的...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel.Activation;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Web;

namespace WcfJsonServiceToGetImages
{
    public class Class1 : WebScriptServiceHostFactory
    {
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {    
            ServiceHost host = new ServiceHost(typeof(Service1),baseAddresses);
           foreach(Uri uri in baseAddresses)
            {       
          WebHttpBinding webbinding=new WebHttpBinding(WebHttpSecurityMode.None);
            webbinding.AllowCookies=true;
            webbinding.CrossDomainScriptAccessEnabled=true;
            EndpointAddress ea=new EndpointAddress(uri);           
            WebHttpBehavior behavior = new WebHttpBehavior();
            behavior.DefaultOutgoingResponseFormat = WebMessageFormat.Json;
            behavior.DefaultBodyStyle = WebMessageBodyStyle.Wrapped;      
            behavior.HelpEnabled = true;               
            behavior.DefaultOutgoingRequestFormat = WebMessageFormat.Json;
           ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IService1), webbinding, uri);
           endpoint.Behaviors.Add(behavior);         
          }            
            return host;        
        }
    }
}

這是我的svc文件的內容。

<%@ ServiceHost Language="C#" Debug="true" Service="WcfJsonServiceToGetImages.Service1" CodeBehind="Service1.svc.cs" Factory="WcfJsonServiceToGetImages.Class1" %>

接口和實現的類包含創建新的WCF svc服務時生成的默認代碼。 請指導我讓此自定義服務宿主工廠工作以托管JSON服務。

編輯:我基本上希望能夠通過http:// localhost:portno / service1.svc / js訪問該服務

非常感謝。

找到了解決方案...我不得不使用WebScriptEnablingBehavior而不是WebHttpBehavior。

這是工作代碼。...希望可以為某人節省時間。...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel.Activation;
using System.ServiceModel;
using System.ServiceModel.Description;
using System.ServiceModel.Web;

namespace WcfJsonServiceToGetImages
{
    public class Class1 : WebScriptServiceHostFactory
    {
        protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
        {    
            ServiceHost host = new ServiceHost(typeof(Service1),baseAddresses);
           foreach(Uri uri in baseAddresses)
            {       
          WebHttpBinding webbinding=new WebHttpBinding(WebHttpSecurityMode.None);
            webbinding.AllowCookies=true;
            webbinding.CrossDomainScriptAccessEnabled=true;
            EndpointAddress ea=new EndpointAddress(uri);           
            WebScriptEnablingBehavior behavior = new WebScriptEnablingBehavior();
            behavior.DefaultOutgoingResponseFormat = WebMessageFormat.Json;
           // behavior.DefaultBodyStyle = WebMessageBodyStyle.WrappedRequest;      



            behavior.DefaultOutgoingRequestFormat = WebMessageFormat.Json;
           ServiceEndpoint endpoint = host.AddServiceEndpoint(typeof(IService1), webbinding, uri);
           endpoint.Behaviors.Add(behavior);         
          }            
            return host;        
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM