我这个纠结呀,公司用win8, .NET 4.5。想做一个很简单的项目,就是wcf宿主iis,项目根目录下有aspx文件和svc文件。于是参考了一个博客http://www.cnblogs.com/yjmyzz/archive/2008/08/19/1270961.html,[原创]WCF入门级使用教程(转载请注明出处) 是个牛人写的。照着这个一步步来,但是期间遇到不少问题,现在总结如下:
1.按照博主说的,建立四个项目,项目名字不要叫01_WCF,02_BLL,...直接叫BLL,WCF,WEB。。。就好了。(因为本人纯菜鸟,命名空间什么的玩不转);
2.前5步都OK,但是到第六步的时候,本人大笨蛋,说是建一个目录叫WCF,然后在这里添加一个WCF Service,命名为CalculateService,这都是ok的,但是说要把里面的文件都删掉,只留CalculateService.svc。 于是我把I接口删了,发现双击svc文件出现的是.cs的C# 代码。是因为这个svc下的svc.cs没有删掉哦!!!接着双击改这里面的东西。我这个听话的孩子,让BLL 项目引用的WCF,WEB引用BLL, 这样下去编译可能会有两个警告,但是好像无所谓的样子。如果不想看到警告,就WEB也引用WCF。
<%@ServiceHostLanguage="C#"Debug="true"Service="WCF.CalculateService"%>
3.web.config的配置,照着原文做就可以了。记得把之前的注释掉,只留一个System.serviceModel节点。
4.值得一提的是使用svcutil这个工具的时候,win8的这个目录Microsoft SDKs\Windows\v7.0A\Bin找不到呀,还以为.net 4.5就不支持svcutil,就从http://originaldll.com/file/svcutil.exe/31570.html 这里下载,但是不知道是不是版本太早了,生成文件的时候,只有output.cs。而不是output.config和**service.cs。
一阵狂百度,发现不行,就一阵狂google。
http://www.infoq.com/news/2013/01/net-framework-updated
这里说有关svcutil.exe还在.net 4.5里有更新,我就醉了,我咋找不到呢?于是我想到了命令行,搜索visual studio tools 在start里。然后进入文件夹,运行 Developer Command Prompt for VS2013
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64> 跑命令 PS C:\users\administrator\downloads> svcutil http://机器名:端口号/wcf/CalculateService.svc?wsdl 就可以生成文件了。啊哈哈今天还是算有收获呀~不过没找到bug~