配置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身份验证)
按照原帖要求建立表(Cno设置为主键,递增)。Cname字符型,Cnum整型。
这里的网址可以看出是本地的地址,这个webservice是由VS提供的,只能本地访问。
然后右击C#项目,选发布,点文件系统,选一个电脑上的位置,比如E:\StockManage,会自动生成文件夹和文件
3. 配置IIS+WebService
把IIS路径配置好,端口号配置好,默认文档增加service1.asmx。启动服务
4.将路由器端口号与本机IP绑定。这样外网访问就配置好了,可以通过外网IP:11125来访问SQL
5.修改Android程序。在httpconnsoap.java里修改连接字符串,这里的需要设置成外网IP,其他的代码都不需要修改,原作者已经写好。
6.可以通过Android程序访问WebService了
FAQ:
1.WebService发布的时候遇到的问题:“尝试为文件 C:\XXX\XXX.mdf 附加自动命名的数据库,但失败。已存在同名的数据库,或指定的文件无法打开或位于 UNC 共享目录中”。
原因是数据库文件位置变化或者无法打开,解决方法:
1)发布的位置不要放在windows用户的文件夹下,可能有权限问题。
2)断开VS与SQL文件的连接。关闭后数据连接会显示一个差。
3)打包发布SQL设置里面不要修改(不读取Web.config文件里面的连接字符串)。
2.发布完WebService后,通过IIS只能本地访问,远程访问出现错误。“测试窗体只能用于来自本地计算机的请求”
解决方法:
在web.config的<system.web></system.web>中间加入如下配置节内容
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就可以了。