大神有没有?看看ajax post 数据到WCF为啥总报405或跨域?
一个WCF测试例子,使用jquery调用方法.。为啥POST就不可以?
代码下载链接
IAjaxServic.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Web;namespace WcfService1
{[ServiceContract(Namespace = "www.yycode.net", Name = "MyTestService")]public interface IAjaxServic{[OperationContract]void DoWork();[OperationContract][WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]string MyFirstWCFFunction();[OperationContract][WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)]string MySecondWCFFunction(string name);[OperationContract][WebInvoke(UriTemplate = "/aaabbb", Method = "POST", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]string MySecondWCFFunction2(UserInfo user, string id);}
}
AjaxService.svc
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Activation;
using System.ServiceModel.Web;
using System.Text;namespace WcfService1
{[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)][JavascriptCallbackBehavior(UrlParameterName ="jsoncallback")]public class AjaxService : IAjaxServic{// 要使用 HTTP GET,请添加 [WebGet] 特性。(默认 ResponseFormat 为 WebMessageFormat.Json)// 要创建返回 XML 的操作,// 请添加 [WebGet(ResponseFormat=WebMessageFormat.Xml)],// 并在操作正文中包括以下行:// WebOperationContext.Current.OutgoingResponse.ContentType = "text/xml";public void DoWork(){// 在此处添加操作实现return;}public string MyFirstWCFFunction(){return "aaabbb";}public string MySecondWCFFunction(string name){string strMsg = string.Format("我的第二个WCF方法~", name);// 在此处添加操作实现return strMsg;}public string MySecondWCFFunction2(UserInfo user, string id){return "bbb";string strMsg = string.Format("test post", user.ToString());// 在此处添加操作实现return strMsg;}// 在此处添加更多操作并使用 [OperationContract] 标记它们}
}
配置文件web.config与 app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration><appSettings><add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /></appSettings><system.web><compilation debug="true" targetFramework="4.6.1" /><httpRuntime targetFramework="4.6.1"/><webServices><protocols><add name="HttpGet"/><add name="HttpPost"/></protocols></webServices></system.web><system.serviceModel><diagnostics performanceCounters="Default" /><bindings><webHttpBinding><binding name="AjaxServiceBinding" crossDomainScriptAccessEnabled="true" /></webHttpBinding></bindings><services><service name="WcfService1.AjaxService"><endpoint address="" behaviorConfiguration="WcfService1.AjaxServiceAspNetAjaxBehavior"binding="webHttpBinding" bindingConfiguration="AjaxServiceBinding"name="AjaxService1" contract="WcfService1.IAjaxServic" /><host><baseAddresses><add baseAddress="http://127.0.0.1:17517/AjaxService.svc" /></baseAddresses></host></service></services><behaviors><endpointBehaviors><behavior name="WcfService1.AjaxServiceAspNetAjaxBehavior"><webHttp /><!--<enableWebScript />--></behavior></endpointBehaviors><serviceBehaviors><behavior name=""><serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" /><serviceDebug includeExceptionDetailInFaults="false" /></behavior></serviceBehaviors></behaviors><protocolMapping><add binding="basicHttpsBinding" scheme="https" /></protocolMapping><serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" /></system.serviceModel><system.webServer><modules runAllManagedModulesForAllRequests="true" /><!--若要在调试过程中浏览 Web 应用程序根目录,请将下面的值设置为 True。在部署之前将该值设置为 False 可避免泄露 Web 应用程序文件夹信息。--><directoryBrowse enabled="true"/><httpProtocol><customHeaders><clear /><add name="Access-Control-Expose-Headers " value="WWW-Authenticate"/><add name="Access-Control-Allow-Origin" value="*" /><add name="Access-Control-Allow-Methods" value="GET, POST, OPTIONS, PUT, PATCH, DELETE" /><add name="Access-Control-Allow-Headers" value="accept, authorization, Content-Type" /><remove name="X-Powered-By" /></customHeaders></httpProtocol></system.webServer></configuration>
然后HOST到Winform
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WCF_TEST
{public partial class Form1 : Form{public Form1(){InitializeComponent();}ServiceHost m_Host = null;private void button1_Click(object sender, EventArgs e){try{m_Host = new ServiceHost(typeof(WcfService1.AjaxService));if (m_Host.State != CommunicationState.Opened){m_Host.Open();}}catch (Exception ex){MessageBox.Show(ex.Message);}}}
}
另一项目jQUERY调用
$(document).ready(function () {$("#Button1").click(function () {$.ajax({type: "GET",url: "http://localhost:17517/AjaxService.svc/MyFirstWCFFunction?jsoncallback=?",dataType: "json",data: {},//contentType: 'application/json; charset=utf-8',//async: false,//非异步//crossDomain: true,success: function (data) {console.log(data);},error: function (str, txtStatus, mes) {alert(txtStatus + mes);}});});$("#Button2").click(function () {$.ajax({type: "POST",//Post方式data: { name: '南宫萧尘' },dataType: "json",contentType: 'application/json; charset=utf-8',async: false,//非异步url: "http://localhost:17517/AjaxService.svc/MySecondWCFFunction?jsoncallback=?",success: function (data, status) {console.log(data);alert(data + status);},error: function (str, txtStatus, mes) {alert(txtStatus + mes);//alert(mes);}});});var user1 = { "user": { "name": "Bill", "sex": "Gates" } };var user2 = { "name": "Bill", "sex": "Gates" };var users2 = {"users": [{ "name": "Bill", "sex": "Gates" },{ "name": "Thomas", "sex": "Carter" }]};$("#Button3").click(function () {$.ajax({//cache: false,//async: false,type: "POST",url: "http://localhost:17517/AjaxService.svc/aaabbb",data: JSON.stringify(user1),contentType: 'application/x-www-form-urlencoded',dataType: "text",processData: false,success: function (data, status) {console.log(data);alert(data + status);},error: function (str, txtStatus, mes) {alert(txtStatus + mes);//alert(mes);}});});
大神有没有?看看ajax post 数据到WCF为啥总报405或跨域?相关推荐
- 【AJAX 笔记】AJAX 基本、HTTP 基本、原生 AJAX 的使用,jQuery / Axios / fetch 发送请求、跨域(JSONP/CORS)
文章目录 1 Ajax 概述 1.1 AJAX 简介 1.2 XML 简介 1.3 AJAX 的特点 1.3.1 AJAX 的优点 1.3.2 AJAX 的缺点 1.4 AJAX 属性和方法 2. H ...
- AJAX(GET POST请求、 jQuery axios 发送请求、跨域--cors、请求超时、网络异常、放弃请求、重复发送请求)
根据视频进行整理 [https://www.bilibili.com/video/BV1WC4y1b78y?p=1] 视频资料 百度网盘: 链接:[https://pan.baidu.com/s/1n ...
- matlab模拟出现较大误差是什么原因,求助大神,使用BP神经网络预测数据,为什么误差很大?...
随机产生了25组数据,利用公式求得结果矩阵,现用20组数据训练BP网络,剩下的5组进行预测,产生的结果误差为什么很大,请大神指教,不甚感激 由于金币只有1.5个,所以没办法发求助帖 %测试BP神经网络 ...
- oracle查询表数据写入时间,求大神解决关于查询Oracle表数据时间
这是查询方法: //通过出发地.目的地.发车日期 查询车次 public List queryAll(String toAddress,String fromAddress,Date startDat ...
- cesium 3dtiles 加载本地数据_深入echarts学习:加载跨域、异步、本地json数据的防坑录
1 说明: ===== 1.1 推荐指数:★★★★ 1.2 网上这方面说明,大多模棱两可,坑很多,讲透彻的不多,故本人做一个小结. 1.3 我曾介绍echarts的简单基本用法: <Echart ...
- 北航计算机学院研究生报录比,北京航空航天大学2016-2020年研究生招生数据汇总!含总报录比!...
明年准备报考北京航空航天大学硕士研究生的同学么要多留意该校历年的录取数据情况.所以麦麦就帮大家整理了下近五年的历史录取数据,包含总报录比情况. #北京航空航天大学#明年考研会不会更难?报录比会不会越来 ...
- 北航计算机考研报录比2019,北京航空航天大学2016-2020年研究生招生数据汇总!含总报录比!...
明年准备报考北京航空航天大学硕士研究生的同学么要多留意该校历年的录取数据情况.所以麦麦就帮大家整理了下近五年的历史录取数据,包含总报录比情况. #北京航空航天大学#明年考研会不会更难?报录比会不会越来 ...
- iframe子页面ajax报错,iframe跨域踩坑
前言 工做中,有些系统是利用的iframe.有一次忽然遇到了一个使人费解的跨域报错,没有发请求,却报了"Error:Blocked a frame with origin...from ac ...
- java socket 8192_呼叫大神walkor,Gateway的客户端接收数据,8192字节不够的问题
小弟超级菜鸟,最近有个项目,准备用Gateway做数据服务端,就找了个例子来做参考,events.php的onmessage处理业务,然后返回了一个数量较大的字符串集,客户端用fread()来读取,但 ...
最新文章
- Markdown 简明教程
- FPGA经验分享——时序收敛之路
- Java黑皮书课后题第8章:*8.27(列排序)用下面的方法实现一个二维数组中的列排序。返回新数组,且原数组保持不变。编写一个测试程序,提示用户输入一个3*3的double型矩阵,显示一个排好的矩阵
- 想要导航提示页最新安卓区_最新微信小程序授权的详细处理思路(一)
- ASP.NET 安全认证(二)——灵活运用deny与allow 及保护.htm等文件
- 列举python中可变数据类型_python 可变数据类型 和 不可变数据类型
- P1287 盒子与球(python3实现)
- 事务的隔离级别与锁的申请和释放
- Vue默认插槽、具名插槽、作用域插槽及使用作用域插槽删除列表项
- 【2022最新Java面试宝典】—— Java基础知识面试题(91道含答案)
- 存储器——存储器容量扩充
- 飞克速读软件的训练法
- Android OTG 读写U盘文件
- Ural 2037. Richness of binary words 打表找规律 构造
- Android 选择商品属性sku
- Unity中ComputeShader入门
- C语言算法扩散墨水,66行C语言计算器,别忘了下载TC编译器!
- 项目管理之人力资源管理
- 关于json数组转List对象的问题
- 学计算机应该怎样学,初学者该如何学习电脑知识
热门文章
- 双十一购买什么最划算,最值得入手的几款数码好物推荐
- 2018-07-03 根据Excel后缀名获取WorkBook
- 树莓派安装ubuntu 20.04后配置wifi固定ip地址
- Java爬虫 --- 爬取王者荣耀英雄图片
- element ui 上一页下一页_vue翻页器,包括上一页,下一页,跳转
- Windows 取证之ShellBags
- 日本留学签证 申请途径(通过中介)
- token失效 判断access_微信怎么判断微信accesstoken是否过期
- 薪资待遇#23届#海尔#嵌入式软件
- 建设一个SaaS平台需要知道什么,做什么(附多图)