最近的数据库课程要求将MySQL数据库部署在服务器上,参考了大佬们的博客后,总结一下。
先放上参考的大佬们的博客。
【原创经验分享】JQuery(Ajax)调用WCF服务 - 南宫萧尘 - 博客园 (cnblogs.com)
WinForm+WCF+mysql+http实现简单的用户登录注册_小瞄喵的博客-CSDN博客
一、VS2019下载WCF组件
进入到 C:\Program Files (x86)\Microsoft Visual Studio\Installer 文件夹下,打开 vs_installer.exe。修改VS2019,点击单个组件,搜索WCF并下载安装。
编辑
编辑
二、 新建WCF项目
新建VS项目,选择WCF服务应用程序。将IService.cs、Service.svc删除(如果你不需要的话)。
编辑
添加新建项,选择WCF服务(支持Ajax)。
编辑
三、配置Web.config参数
打开Web.config,配置Forms身份验证。
<authentication mode="Forms"/>
编辑
右键单击 Web.config,选择 编辑WCF配置。
编辑
右键单击 绑定,新建绑定配置。
编辑
选择 webHttpBinding,修改 配置-Name,将 常规-CrossDomainScriptAcessEnabled 设为 True。
编辑
编辑 点击 服务-终结点,修改Name, 在 BindingConfiguration处绑定之前的“绑定”。
编辑
四、编写WCF服务
转到VS项目中之前创建的 xxx.svc.cs文件中,添加如下两项。
[JavascriptCallbackBehavior(UrlParameterName ="jsoncallback")]
编辑
[WebGet (ResponseFormat =WebMessageFormat.Json)]
编辑 在 [OperationContract] 下面编写函数。
public string First() { return "OK"; } [OperationContract] [WebInvoke(Method ="GET",BodyStyle =WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] /*有参数*/ public string Second(string name) { string msg = string.Format("{0}success",name); return msg; }
现在,保存项目,右键 svc文件,在浏览器中查看。
编辑
出现如下网页,说明前面没啥问题。
编辑 五、创建HTML,调用服务
新建一个HTML文件,其中,getJSON的URL链接为上图出现的。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title></title> <script src="js/jquery-1.8.3.min.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> function fGetWCF() { $.getJSON("http://localhost:8849/dataService.svc/First?jsoncallback=?", function (data) { alert(data); var vData = JSON.stringify(data); alert(vData); }); } function fGetWCF2() { $.getJSON("http://localhost:8849/dataService.svc/Second?jsoncallback=?", { name: '福元路小佩奇' }, function (data) { alert(data); var vData = JSON.stringify(data); alert(vData); }); } </script> </head> <body> <input type="button" name="wcf" id="wcf" value="无参数调用WCF测试" onclick="fGetWCF()" /> <input type="button" name="wcf" id="wcf" value="有参数调用WCF测试" onclick="fGetWCF2()" /> </body> </html>
点击按钮,均有alert弹窗出现。
编辑
运行HTML文件没反应的,在同级目录下新建js文件夹,去网上下载 jquery-1.8.3.min.js放进来。因为有一句 src="js/jquery01.8.3-min.js"
六、WCF连接MySQL
下载 MySQL.Data.DLL(百度),右键项目-添加-引用,将下载的MySQL.Data.DLL加进去。
添加如下引用。
using MySql.Data; using MySql.Data.MySqlClient; using System.Data;
配置MySQL,并创建连接。
const string sqlconfig = "Server=localhost;Port=3306;Uid=root;Pwd=11111;Database=html1"; MySqlConnection connection = new MySqlConnection(sqlconfig);
编写相应函数,完整svc.cs代码如下。
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; using MySql.Data; using MySql.Data.MySqlClient; using System.Data; namespace databaseExport { [ServiceContract(Namespace = "")] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] [JavascriptCallbackBehavior(UrlParameterName ="jsoncallback")] public class dataService { // 格式转换:DataSet->JSON public string DataTableToJSON(DataTable dt) { StringBuilder jsonBuilder = new StringBuilder(); jsonBuilder.Append("{\"Name\":\"" + dt.TableName + "\",\"Rows"); jsonBuilder.Append("\":["); for (int i = 0; i < dt.Rows.Count; i++) { jsonBuilder.Append("{"); for (int j = 0; j < dt.Columns.Count; j++) { jsonBuilder.Append("\""); jsonBuilder.Append(dt.Columns[j].ColumnName); jsonBuilder.Append("\":\""); jsonBuilder.Append(dt.Rows[i][j].ToString().Replace("\"", "\\\"")); jsonBuilder.Append("\","); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("},"); } jsonBuilder.Remove(jsonBuilder.Length - 1, 1); jsonBuilder.Append("]"); jsonBuilder.Append("}"); return jsonBuilder.ToString(); } public string DataSetToJSON(DataSet ds) { StringBuilder json = new StringBuilder(); json.Append("{\"Tables\":"); json.Append("["); foreach (System.Data.DataTable dt in ds.Tables) { json.Append(DataTableToJSON(dt)); json.Append(","); } json.Remove(json.Length - 1, 1); json.Append("]"); json.Append("}"); return json.ToString(); } // 在此处添加更多操作并使用 [OperationContract] 标记它们 [OperationContract] [WebGet (ResponseFormat =WebMessageFormat.Json)] /*无参数*/ public string First() { const string sqlconfig = "Server=localhost;Port=3306;Uid=root;Pwd=111111;Database=html1"; MySqlConnection connection = new MySqlConnection(sqlconfig); connection.Open(); string sql = "SELECT * FROM test1"; MySqlDataAdapter adapter = new MySqlDataAdapter(sql, connection); DataSet ds = new DataSet(); adapter.Fill(ds); connection.Close(); return DataSetToJSON(ds); } [OperationContract] [WebInvoke(Method ="GET",BodyStyle =WebMessageBodyStyle.WrappedRequest, ResponseFormat = WebMessageFormat.Json, RequestFormat = WebMessageFormat.Json)] /*有参数*/ public string Second(string name) { string msg = string.Format("{0}success",name); return msg; } } }
点击 工具-NuGet包管理器-程序包管理器控制台,运行如下命令,下载Renci.Ssh.NET.dll
NuGet\Install-Package SSH.NET -Version 2016.1.0
编辑
跟前面一样,在浏览器中跑一下WCF服务,打开之前的HTML,点击 无参数调用WCF测试 ,出现如下内容,说明已经读取到数据库中内容。
编辑
七、部署IIS
打开控制面板-程序-启用或关闭Windows功能,勾选并确定。编辑
编辑
进入VS,右键项目,点击发布。选择方法为:文件系统,选择喜欢的目录,设置好后发布,如下图(该图引自WinForm+WCF+mysql+http实现简单的用户登录注册_小瞄喵的博客-CSDN博客)
编辑
目录下会出现如下文件夹。
编辑
点击 控制面板-系统和安全-管理工具,点击第一个 IIS。
编辑
右键单击 网站,选择添加网站,确定网站名称,物理路径选择之前发布的目录。
编辑
点击 连接为,选择 特定用户,输入你的电脑名称和登录密码。
编辑
如果出现如下情况,检查密码是否错误。如果密码没问题,给电脑新建一个用户,用新建的用户和密码连接。
编辑
如果连接成功,点击测试设置,应该出现下图。
编辑
选择IP地址和端口号,点击确定即可。浏览创建的网站,如下图。
编辑
最后,将HTML文件中的URL地址改为该地址。如图。
编辑
OK,大功告成!
标签:string,WCF,编辑,Ajax,jsonBuilder,MySQL,using,Append From: https://www.cnblogs.com/Peggy114514/p/17028511.html