WCF配置问题(配置WCF跨域)

其它的先放一边。今天先来分享一下前段时间给公司做网站WCF服务接口的心得。


配置文件的配置问题

  这里既然讨论WCF配置文件的问题,那么怎么创建的就不一一讲解了。好多博主都有提过的。所以直接分享自己开发时的收获,这里感谢好多给我启发的人,@好多人....

  我这里就拿登录接口来分享下吧。

  先贴出代码。

  

这是服务端代码

因为ASP的兼容性问题,这里的AspNetCompatibilityRequirementsMode用Allowed(这里说一下,因为前段用Ajax调的接口,所以用了callback)
namespace WCFService.Services
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“Login”。
    // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 Login.svc 或 Login.svc.cs,然后开始调试。
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
    [JavascriptCallbackBehavior(UrlParameterName = "jsoncallback")]
    public class Get_Login : ILogin
    {
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="id"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        string ILogin.Login(string id, string pwd)
        {
            return BLL.LoginBLL.Instance.Login(id, pwd);
        }
    }
}

这是契约代码

namespace WCFService.IBLL
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“ILogin”。
    [ServiceContract]
    public interface ILogin
    {
        [OperationContract]
        [WebInvoke(
            Method = "GET",
            RequestFormat = WebMessageFormat.Json,
            ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Bare,
            UriTemplate = "/Login?id={id}&pwd={pwd}")]
        string Login(string id, string pwd);
    }
}

服务契约这里使用的是Get方法



  先配置服务的ABC

A. address为空就行

B. binding这里我们绑定为webhttpbinding(因为这是涉及到跨域问题)

C. contract绑定的服务契约(当然啦,这里绑定的就是我们上面的ILogin)

ABC配置完成后基本的WCF服务已经是可以使用了的。但是我们这里讲解的它的跨域问题,WCF最主要的还是配置问题。这个是关键。接下来我们说说这个跨域问题。

  配置跨域

如需跨域的话要配置下面几点(仅供参考)

服务配置也贴出来吧

<!--登录-->
      <service name="Dar.WCFService.Services.Get_Login">
        <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding"
          bindingConfiguration="HttpJsonBinding" contract="Dar.WCFService.IBLL.ILogin" />
      </service>

这里说一下跨域除了配置ABC外还要加bindingConfiguration属性,binding配置为webHttpBinding,以下是为bindingConfiguration配置允许跨域

<!--指定脚本可以跨域-->
    <bindings>
      <webHttpBinding>
        <binding name="HttpJsonBinding" crossDomainScriptAccessEnabled="true"/>
      </webHttpBinding>
    </bindings>

接下来配置服务行为

<behaviors>
      <endpointBehaviors>
        <behavior name="web">
          <!-- 配置指定允许web脚本访问-->
          <webHttp/>
          <!--<enableWebScript />-->
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
          <serviceDebug includeExceptionDetailInFaults="false"/>
        </behavior>
      </serviceBehaviors>
    </behaviors>

这里顺带说一下。

aspNetCompatibilityEnabled和multipleSiteBindingsEnabled都要设置为true



有点累了,睡个午觉。就先讲那么多,萌新一个。对WCF只是了解了些基础。哪里不对的望各位大神指点(勿喷!)。有什么我们多多交流。

时间: 2024-11-08 01:56:28

WCF配置问题(配置WCF跨域)的相关文章

阿里云服务器ECS Apache、Nginx 配置支持跨域访问

问题描述 如何让 Apache.Nginx支持跨域访问. 处理办法 配置 Apache 跨域访问 步骤: 修改 httpd.conf. 把 LoadModule headers_module modules/mod_headers.so 前面的注释删除 修改  改为:  即: AllowOverride none Require all granted Header set Access-Control-Allow-Origin * 说明: 首先使用图形界面开启headers_module模块功

第五节:SignalR大杂烩(与MVC融合、全局的几个配置、跨域的应用、C/S程序充当Client和Server)

一. 说在前面的话 本节主要在前面章节的基础上补充了几个简单的知识点,比如:第三方调用通过 GlobalHost.ConnectionManager.GetHubContext<MySpecHub1>();来获取Hub对象,那么能不能封装一下不必每次都这么获取呢?再比如SignalR传输是否有大小限制,一下传输10w个字能否传输成功?最后着重整理一下跨域的各种使用情况,结合C/S程序充当客户端和服务器端. 本节内容包括: ①. SignalR与MVC或者WebApi简单的整合. ②. 全局的几

Nginx配置springboot-vue跨域

nginx-springboot-vue前后端分离跨域配置 引言 接着上篇--简单的springboot-vue前后端分离登录Session拦截的demo,其中跨域是通过springboot后端全局设置的,但是碰到了奇怪的问题,用了个不优雅的方式解决. 于是想到使用Nginx跨域应该就不会如此了. windows下载安装 http://nginx.org/ 下载稳定版,解压缩. 查看配置文件 /nginx-1.16.0/conf/nginx.conf : #gzip on; server { l

node.js配置允许跨域请求,设置允许携带的请求头参数

最近在用node.js写自己的后台时遇见了跨域问题,之前处理跨域都是在前端配置代理解决的,这次打算在后台解决,中途也遇到了一些坑,比如我在请求头里加了一个自定义的参数token,结果后台配置的时候没有允许请求能够携带该参数,造成预检请求发出后,就没任何响应了.为此折腾了半天才发现问题...还是对它不够了解,所以查阅了相关资料,下面做出自己的理解: 都知道跨域是因为浏览器的同源策略造成的,当客户端访问服务端时,如果两端的ip.端口.协议任意一个不同就会产生跨域.下面介绍node.js后台如何配置允

Web API 实现JSONP或者安装配置Cors跨域

前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器.Action方法,以及过滤器.模型绑定等等,想想也是心痛不已,水太深了,摸索原理关键是太枯燥和乏味了,但是呢,从情感上还是挺乐意去摸索原理,而情绪上不太乐意去探究原理,于是乎,本文就由此诞生了,借此文缓解下枯燥的心情和压抑的情绪.后续继续摸索原理. 接下来我们要讲的就是利用JSONP和利用Cors这两种方式来实现跨域,请看下文..... JSON

Web API之手动实现JSONP或者安装配置Cors跨域(七)

前言 照理来说本节也应该讲Web API原理,目前已经探讨完了比较底层的Web API消息处理管道以及Web Host寄宿管道,接下来应该要触及控制器.Action方法,以及过滤器.模型绑定等等,想想也是心痛不已,水太深了,摸索原理关键是太枯燥和乏味了,但是呢,从情感上还是挺乐意去摸索原理,而情绪上不太乐意去探究原理,于是乎,本文就由此诞生了,借此文缓解下枯燥的心情和压抑的情绪.后续继续摸索原理. 接下来我们要讲的就是利用JSONP和利用Cors这两种方式来实现跨域,请看下文..... JSON

django中配置允许跨域请求

对于django 安装django-cors-headers,详情请看官方文档 pip install django-cors-headers 配置settings.py文件 a.在INSTALLED_APPS里添加"corsheaders" INSTALLED_APPS = [ ... 'corsheaders', ... ] b.在MIDDLEWARE_CLASSES添加 'corsheaders.middleware.CorsMiddleware', 'django.middle

VUE3.0升级与配置(跨域等)

1.检查本机vue版本 vue -V 2.升级vue3.0命令 npm install -g @vue/cli 3.创建完项目后,在项目根目录新增vue.config.js文件,插入代码(简洁) 1 module.exports = { 2 runtimeCompiler: true, //是否使用包含运行时编译器的 Vue 构建版本 3 publicPath: '', 4 productionSourceMap: false, //不在production环境使用SourceMap 5 dev

SpringBoot配置Cors跨域请求

一.同源策略简介 同源策略[same origin policy]是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源. 同源策略是浏览器安全的基石. 什么是源 源[origin]就是协议.域名和端口号.例如:http://www.baidu.com:80这个URL. 什么是同源 若地址里面的协议.域名和端口号均相同则属于同源. 是否是同源的判断 例如判断下面的URL是否与 http://www.a.com/test/index.html 同源 http://www

React里配置接口跨域代理【亲测完美实现~】

这种问题当然离不了官网妈妈的支持:传送门 官网给了三种解决方案.前两种我就不赘述了(主要是因为我没用) 而官网的第三种推荐的方式: 1.安装依赖: $ npm install http-proxy-middleware --save $ # or $ yarn add http-proxy-middleware 2.在“src”文件夹下新建“setupProxy.js”文件.并做官网推荐的配置- 理论上,在正确的路径下新建setupProxy.js完毕,你只需要把下边这段官网的代码抄过来就可以了