Android通过WebService远程访问SQLServer数据库配置

先放资源(WebService代码C#):https://download.csdn.net/download/yuwb980214/10721054

居然不能免费。

————————————————————————————————————————————

配置http://blog.csdn.net/zhyl8157121/article/details/8169172该帖子中的WebService,代码见http://blog.csdn.net/haoxingfeng/article/details/9111105。

上面两个帖子里面代码本机运行完全没有问题。

1. 配置IIS(每个版本都差不多)

网上很多了,随便粘一个:http://jingyan.baidu.com/article/eb9f7b6d9e73d1869364e8d8.html。

注:不管win7还是win10必须是旗舰版/专业版,家庭版没有这功能。

2. 发布WebService(VS2010)

在例程Demo/StockManageWebservie工程里面先建立一个数据库文件(服务器资源管理器窗口-右击数据连接-添加连接-SQL数据库文件-起名字-确定),如图(因为没安装独立的SQL Server,只是用的VS自带的SQL Server Express,所以使用windows身份验证)

Android通过WebService远程访问SQLServer数据库配置_第1张图片

按照原帖要求建立表(Cno设置为主键,递增)。Cname字符型,Cnum整型。

Android通过WebService远程访问SQLServer数据库配置_第2张图片

将数据的库的链接字符串拷贝到DBOperation.cs里面,F5运行即可打开网页实现对数据库的控制。

Android通过WebService远程访问SQLServer数据库配置_第3张图片

这里的网址可以看出是本地的地址,这个webservice是由VS提供的,只能本地访问。

Android通过WebService远程访问SQLServer数据库配置_第4张图片

然后右击C#项目,选发布,点文件系统,选一个电脑上的位置,比如E:\StockManage,会自动生成文件夹和文件

Android通过WebService远程访问SQLServer数据库配置_第5张图片

Android通过WebService远程访问SQLServer数据库配置_第6张图片

3. 配置IIS+WebService

把IIS路径配置好,端口号配置好,默认文档增加service1.asmx。启动服务

Android通过WebService远程访问SQLServer数据库配置_第7张图片Android通过WebService远程访问SQLServer数据库配置_第8张图片Android通过WebService远程访问SQLServer数据库配置_第9张图片

4.将路由器端口号与本机IP绑定。这样外网访问就配置好了,可以通过外网IP:11125来访问SQL

Android通过WebService远程访问SQLServer数据库配置_第10张图片    Android通过WebService远程访问SQLServer数据库配置_第11张图片

5.修改Android程序。在httpconnsoap.java里修改连接字符串,这里的需要设置成外网IP,其他的代码都不需要修改,原作者已经写好。

6.可以通过Android程序访问WebService了

Android通过WebService远程访问SQLServer数据库配置_第12张图片  Android通过WebService远程访问SQLServer数据库配置_第13张图片

 

FAQ:

1.WebService发布的时候遇到的问题:“尝试为文件 C:\XXX\XXX.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中”

原因是数据库文件位置变化或者无法打开,解决方法:

1)发布的位置不要放在windows用户的文件夹下,可能有权限问题。

2)断开VS与SQL文件的连接。关闭后数据连接会显示一个差。

Android通过WebService远程访问SQLServer数据库配置_第14张图片

3)打包发布SQL设置里面不要修改(不读取Web.config文件里面的连接字符串)。

Android通过WebService远程访问SQLServer数据库配置_第15张图片

2.发布完WebService后,通过IIS只能本地访问,远程访问出现错误。“测试窗体只能用于来自本地计算机的请求”

 

解决方法:
      在web.config的中间加入如下配置节内容
 

[html] view plain copy print?

  1. <webServices>  
  2.         <protocols>  
  3.            <add name="HttpSoap"/>  
  4.            <add name="HttpPost"/>  
  5.            <add name="HttpGet"/>  
  6.            <add name="Documentation"/>  
  7.         protocols>  
  8. webServices>  

3. Android程序运行时,执行getOutputStream()时出现“NetworkOnMainThreadException”错误,在Android2.2以上版本中出现,提示不要在主线程中访问网络,这个问题网上有很多种解决方法,例如: http://blog.csdn.net/wdxpg123/article/details/25291191。

 

程序测试运行时最简单的修改方法:在AndroidManifest.xml文件中,把minSdkVersion的版本设置为小于8,android:targetSdkVersion="15"一句直接删掉,让eclipse认为android运行版本不高于8。不推荐发布使用。

4.还遇到了IIS和VS的framework版本不兼容的问题,把VS和IIS都改成4.0就可以了。

 

——————————————————————————————————————————————

 

最近重新配置了一下,又发现了几个问题,CSDN上很多人都遇到过并解决,记录如下:

5. 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”

解决方法:https://blog.csdn.net/xingxing513234072/article/details/38615997

6. 编译器错误消息:CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary .....................

............拒绝访问。

解决方法:

原因是由于系统目录下的Temp目录无相应的权限所致,具体操作如下:

来到C:/Windows目录,修改temp文件夹的属性。

在安全页设置IIS-IUSRS的权限,赋予修改、读取、写入等权限。

Android通过WebService远程访问SQLServer数据库配置_第16张图片  Android通过WebService远程访问SQLServer数据库配置_第17张图片

你可能感兴趣的:(android)