[英]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.