今天在尝试重现OP一个问题的,遇到了一个新的问题。
项目坏境:
WCF Data Service 5.6
Entity Framewrok 5(不用6的原因时要重新配置WCF项目)
SQL Server Express
问题描述:
在于数据库连接的时候,我使用了Trust Connection,所以并没有提供访问数据库的用户名和密码,然后我先是在IIS Express模式下运行项目,这个时候是没有什么问题的。但是却发现,从客户端发出的http请求不能被Fiddler捕捉到,网上查了下,原因是Fiddler竟然不能捕捉localhost或127.0.0.1的http请求,解决方案是使用mancihename代替。这样问题又来了,这个坑爹的IIS express只能用localhost,那这样理所当然要把程序部署到真正的IIS上。
然后问题来了,在部署到IIS上后,用mancihename来访问WCF Data Service的默认服务页面是没有问题的,但是当要查询具体的数据时候,坑爹的事情发生了,报了个500错误,根本的原因的事数据库未能打开,这令我 非常郁闷的:
然后在网上各种search,终于找到症结所在,还是坑爹的IIS搞出来的事情。当IIS连接一个你认为是trust connection的连接时,它会自动分配一个账户跑程序进程,但是这个账户不一定是你的windows 登陆账号,那意味着没有数据库访问的权限,然后就悲剧了。
目前的解决方案是也是我认为最简单的就是不使用trust connection,在连接字符串里提供用户名和密码。要去问下IIS的同事,有没有在IIS断的解决方案。
Edit: 2014-09-25
今天问了下IIS同事,发现不行,只能以用户名和密码嵌在connection string里的方式。