最近公司有一个Web端的项目,基本需求是需要连接客户的SQL Server数据库获取数据,本人只对Unity比较熟练,对aps.net基础为零,到处查了好几天资料算是完成了项目需要的功能。中间遇到挺多坑,网上没找到这方面比较完整资料的。现在分享一下:

本文主要参考资料:https://blog.csdn.net/sinat_39291423/article/details/103402825?depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5&utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-5  特别感谢大神的分享

主要的步骤均在参考资料中,开始本人也是按照参考资料一步步做下来的;只不过在实现过程中遇到了一些问题,和不适用的地方做了些修改。

在按照大神的做法中有些地方遇到的主要问题:

1、asp.net web应用程序在vs编译器环境下运行时可能是因为安全性的问题Unity无法访问。需要发布出来之后布到IIs上,才能访问。因此编译器环境下无法测试,只能使用测试工具测试。

2、asp.net web应用程序编译器环境下可以连接SQLServer数据库时可以使用系统登录的方式,但是发布完成部署到IIS上时必须改成通过IP、user、psd登录的方式才能成功读取数据。修改方式很多,简单点就是直接更改配置文件connectionString="Data Source=192.168.1.10;Initial Catalog=SqlTest(数据库名称);User ID=sa;Password=decent;"

3、通过IP、user、psd登录时需要对Sql数据库进行配置,通过数据库配置管理器启动 TCP/IP协议服务,通过sqlserver management工具修改数据库的登录方式允许通过Sql server账户密码登录。这个网上步骤很多,就不详细写了。还需要修改部署到IIS上的工程上的一些的配置:打开IIS管理器,在应用程序池中找到部署的工程,在《高级设置》中修改《进程模型》中的《标识》类型为LocalSystem(这个也很重要,不改的话连不上数据库)

4、在资料的做法中读取数据,需要知道数据库表中所有的列名称,并且需要建立与数据库列表完全对应的数据类,有一点错误就会导致数据读取失败,而且没介绍怎样通过Sql语句读取数据库,数据操作很麻烦,查了半天资料后改成通过SQL语句的方式读取数据。主要改动提供api操作接口的类,即资料中的 StudentController.cs,这个类是专门与外部链接通信用的,增删改查接口都是在这个类中实现,起什么名字(XXXXController),链接地址就需要按类名写,大小写好像没啥关系,例如资料中的类名StudentController,后面发布完成后的链接地址就是 http://localhost:8091/api/student/,我的类名叫 DataController,链接地址就是http://localhost:8091/api/data/ 。具体改动如下:

    public class DataController : ApiController{//private Context db = new Context();//public IEnumerable<DataClass> Get()//{//    return db.Students.AsEnumerable();//}// GET api/valuespublic IEnumerable<string> Get(){return new string[] { "value1", "value2" };}// GET api/values/5public string Get(int id){try{SqlConnection sqlConnection = new SqlConnection("Data Source=192.168.1.10;Initial Catalog=SqlTest;Integrated Security=True;User Id=sa;Password=decent");sqlConnection.Open();string sql = "select * from DataClass";DataSet dataSet = new DataSet();SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(sql, sqlConnection);sqlDataAdapter.Fill(dataSet);return JsonConvert.SerializeObject(dataSet);}catch (Exception ex){return ex.ToString();}}}

上面的public IEnumerable<string> Get()方法主要是用于部署IIS后测试链接是否可用,不需要的可以删掉。重点是public string Get(int id)方法,部署到IIS后链接地址为http://localhost:8091/api/data/1 链接地址最后的这个”1"可以随便写啥都行,只要是int类型,1就是调用该方法传入的参数,也可以将get方法的参数改成str类型。现在SQL语句是写死查询某一个表,后续准备用这个参数传入SQL语句,就能实现更加灵活的查找数据了。

5、只按照上面的改完编译器环境下运行没啥问题,但是部署到IIS后测试发现还是读不到数据,无参数GET方法能正常返回,有参数的get返回的是错误提示  'NT AUTHORITY\\SYSTEM' 登录失败,到这asp.net web程序其实是没有问题了,只需要修改数据库中的配置就可以了,修改方式见:https://www.cnblogs.com/freedomwei/articles/9296853.html,其实就是给外部操作的权限。之后就可以在Unity中就可以间接的读取数据库了。

Unity WebGL通过ASP.NET Web API连接SqlServer数据库相关推荐

  1. asp.net web.config连接mysql数据库_ASP.NET中使用web.config配置数据库连接

    本文中我们主要讨论了如何使用web.config来配置一个web应用程序中的数据库连接.web.config文件是标准的xml文件,我们可以使用它来为一台机器下的每一个web应用程序或某个应用程序或一 ...

  2. Asp.Net Web Api 部署------远程连接云服务器

    Asp.Net Web Api 部署------远程连接云服务器 一.同时按住Windows键+R键,并输入 mstsc,点击确定: 二.输入云服务器的公网IP地址,点击连接: 三.输入登录名和登录密 ...

  3. ASP.NET Core:从ASP.NET Web API迁移的多层数据服务应用程序

    目录 介绍 设置和运行示例应用程序 类库项目 依赖注入 访问应用程序设置 实体框架核心相关更改 主键标识插入问题 数据上下文和连接字符串 自定义存储库(Repositories) LINQ表达式翻新( ...

  4. 【ASP.NET Web API教程】2.3.3 创建Admin控制器

    原文:[ASP.NET Web API教程]2.3.3 创建Admin控制器 注:本文是[ASP.NET Web API系列教程]的一部分,如果您是第一次看本博客文章,请先看前面的内容. Part 3 ...

  5. ASP.NET Web API自身对CORS的支持: CORS授权检验的实施

    通过<EnableCorsAttribute特性背后的故事>我们知道:由CorsPolicyProvider提供的CorsPolicy表示目标Action采用的资源授权策略,ASP.NET ...

  6. ASP.NET Web API 特性

    ASP.NET MVC 4 包含了 ASP.NET Web API, 这是一个创建可以连接包括浏览器.移动设备等多种客户端的 Http 服务的新框架, ASP.NET Web API 也是构建 RES ...

  7. 【ASP.NET Web API教程】2.3.5 用Knockout.js创建动态UI

    [ASP.NET Web API教程]2.3.5 用Knockout.js创建动态UI 原文:[ASP.NET Web API教程]2.3.5 用Knockout.js创建动态UI 注:本文是[ASP ...

  8. 将WebApiTestClient添加到ASP.NET Web API帮助页面

    ASP.NET Web API帮助页面是一种有用的扩展,可为您的Web API自动生成基于Web的文档.它使调试变得更容易,因为您可以将帮助页面中的信息复制/粘贴到Fiddler等工具中,以调用Web ...

  9. 【转】在ASP.NET Web API 2中使用Owin基于Token令牌的身份验证

    基于令牌的身份验证 基于令牌的身份验证主要区别于以前常用的基于cookie的身份验证,基于cookie的身份验证在B/S架构中使用比较多,但是在Web Api中因其特殊性,基于cookie的身份验证已 ...

最新文章

  1. 【每日DP】day 8、P2014 [CTSC1997]选课(树形DP(树形背包)模板)难度⭐⭐⭐
  2. Mac电脑mysql创建数据库步骤_mac上创建MySQL的基本步骤
  3. 用字节流查看txt文件
  4. C++_new创建的数组作为参数传递
  5. python qt designer 重定向_[Python自学] PyQT5-QTDesigner中关联信号和槽
  6. 查找丢包故障点的一个好命令:pathping
  7. xxx系统的6大质量属性战术
  8. paip.C#.NET多线程访问 toolStripStatusLabel VC421
  9. 华硕h410csm怎么开启_华硕主板怎么开启uefi模式?华硕主板BIOS开启uefi模式详细方法...
  10. 关于flutter出现Because flutter_app depends on flutter_screenutil >=3.0.0-beta.1 which requires Flutter S
  11. 固高运动卡的使用 4 运动之PT(点位)运动
  12. vb6集成ad登录共享文件_肇庆学院校园网WiFi认证自动登录指南
  13. python正则匹配连续相同字符_正则表达式: 匹配n个相同连续字符
  14. 本地小说阅读网站打造
  15. 右键新增文件/文件夹-打开方式
  16. 一文了解各大数据库查询语言(Gremlin vs Cypher vs nGQL操作篇
  17. DevTools 无法加载源映射:无法加载chrome-extension://ncennffkjdiamlpmcbajkmaiiiddgioo/js/xl-content.js.map 的内容
  18. kettle-创建资源库
  19. 【YOLACT】训练自己数据集
  20. 毕业设计 单片音乐律动响应桌面灯

热门文章

  1. Python爬取电影信息
  2. 【CF1641C】Anonymity Is Important(STL,模拟(?))
  3. 最囧游戏计算机5,最囧游戏5最强大脑全关卡通关攻略
  4. 计算机游戏50关,最囧游戏50关怎么过 最囧游戏第50关
  5. ArryList 集合
  6. Ubuntu虚拟机磁盘容量不足
  7. 流水线与并行处理概述
  8. JAVA计算机毕业设计牙科诊所管理系统Mybatis+系统+数据库+调试部署
  9. 昌吉学院计算机毕业难不难,昌吉学院考研难吗?一般要什么水平才可以进入?...
  10. GPS报文中经度纬度的表示方法,以及GGA报文的解析