WCF 跨域 Http绑定
来源:互联网 发布:东营汇佳软件 编辑:程序博客网 时间:2024/06/08 11:47
跨域服务:
特性WebGet在System.ServiceModel.Web中
[ServiceContract] public interface IDomainService { [OperationContract] [WebGet(UriTemplate = "ClientAccessPolicy.xml")] Message ProvidePolicyFile(); } public class DomainService:IDomainService { #region IDomainService 成员 public System.ServiceModel.Channels.Message ProvidePolicyFile() { /* 这样第二次访问会产生文件独占的异常,应该应改为使用 MemoryStream 缓存读取,或者直接使用 XmlReader reader = XmlReader.Create(@"ClientAccessPolicy.xml"); */ //FileStream filestream = File.Open(@"ClientAccessPolicy.xml", FileMode.Open,FileAccess.Read); //XmlReader reader = XmlReader.Create(filestream); //ClientAccessPolicy.xml文件要放在exe文件同级 XmlReader reader = XmlReader.Create(@"ClientAccessPolicy.xml"); System.ServiceModel.Channels.Message result = Message.CreateMessage(MessageVersion.None, "", reader); return result; } //CrossDomainServiceBehavior #endregion }
普通WCF服务:
[ServiceContract] public interface IWCFService { [OperationContract] int DoWork(int a, int b); [OperationContract] int DoWork2(int a, int b); } public class WCFService : IWCFService { public int DoWork(int a,int b) { return a + b; } public int DoWork2(int a, int b) { return a - b; } }
跨域策略文件clientaccesspolicy.xml:
<?xml version="1.0" encoding="utf-8"?><access-policy> <cross-domain-access> <policy> <allow-from http-request-headers="*"> <domain uri="*"/> </allow-from> <grant-to> <resource path="/" include-subpaths="true"/> </grant-to> </policy> </cross-domain-access></access-policy>
配置文件App.config:
<?xml version="1.0" encoding="utf-8" ?><configuration> <system.serviceModel> <services> <service behaviorConfiguration="WCFBase.WCFServiceBehavior" name="WCFBase.WCFService"> <endpoint address="" binding="basicHttpBinding" contract="WCFBase.IWCFService"> <identity> <dns value="localhost" /> </identity> </endpoint> <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" /> <host> <baseAddresses> <add baseAddress="http://localhost:9090/WCFService/" /> </baseAddresses> </host> </service> <service name="WCFBase.DomainService"> <endpoint address="" behaviorConfiguration="DomainServiceBehavior" binding="webHttpBinding" contract="WCFBase.IDomainService" /> <host> <baseAddresses> <add baseAddress="http://localhost:9090/" /> </baseAddresses> </host> </service> </services> <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/> <behaviors> <serviceBehaviors> <behavior name="WCFBase.WCFServiceBehavior"> <serviceMetadata httpGetEnabled="true" /> <serviceDebug includeExceptionDetailInFaults="false" /> </behavior> </serviceBehaviors> <endpointBehaviors> <behavior name="DomainServiceBehavior"> <webHttp/> </behavior> </endpointBehaviors> </behaviors> <!-- <bindings> <basicHttpBinding> <binding name="NoneSecurity" maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" useDefaultWebProxy="false"> <readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/> <security mode="None"/> </binding> </basicHttpBinding> </bindings> --> </system.serviceModel> </configuration>
启动方法
class Program { static void Main(string[] args) { ServiceHost host = new ServiceHost(typeof(WCFService)); host.Open(); ServiceHost crossDomainserviceHost = new ServiceHost(typeof(DomainService)); crossDomainserviceHost.Open(); Console.WriteLine("Service Start..."); Console.ReadKey(); host.Close(); } }
- WCF 跨域 Http绑定
- WCF 跨域TCP绑定
- WCF绑定
- WCF绑定(Binding)
- WCF服务-绑定
- WCF绑定方式选择
- (三)、WCF绑定
- wcf 绑定(Bindings)
- WCF绑定类型选择
- wcf 绑定类型
- WCF源码(绑定)
- 深入学习WCF-绑定
- WCF常用绑定选择
- WCF绑定的选择
- WCF常用绑定 选择
- 经验之谈WCF选择绑定
- WCF常用绑定选择
- WCF 绑定(Binding)
- JavaScript数据库 Taffy DB
- 深入理解const char*p,char const*p,char *const p,const char **p,char const**p,char *const*p,char**const p
- X64 Linux 无法从本地字符界面登陆
- Android程序的Unable to instantiate activity ComponentInfo异常
- 10304Optimal Binary Search Tree
- WCF 跨域 Http绑定
- 多项分布的最大似然估计
- Microsoft.Jet.OLEDB.4.0 在 64 bit 主機使用
- 经典面试70问
- Windows系统Vim编辑器乱码解决分析
- ffmpeg 转换VC工具已经可以生成工程文件
- 生成IPA文件
- 黑马程序员_学员周峰_IO流笔记
- hdu 1160 FatMouse's Speed(最长递减子序列+输出路径)