|
最近的数据库课程要求将MySQL数据库部署在服务器上,参考了大佬们的博客后,总结一下。
先放上参考的大佬们的博客。
【原创经验分享】JQuery(Ajax)调用WCF服务 - 南宫萧尘 - 博客园 (cnblogs.com)
WinForm+WCF+mysql+http实现简单的用户登录注册_小瞄喵的博客-CSDN博客
未能加载文件或程序集“Renci.SshNet, Version=2016.1.0.0, Culture=neutral, PublicKeyToken=……” - 河耶悦子 - 博客园 (cnblogs.com)
一、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身份验证。 编辑
右键单击 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链接为上图出现的。 点击按钮,均有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,大功告成!
来源:https://www.cnblogs.com/Peggy114514/archive/2023/01/05/17028511.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
|