sl部署比开发还麻烦,还好在网上找到这篇帖子,基本解决了遇到的所有问题:
http://www.cnblogs.com/sonce/archive/2011/03/04/1970803.html
当做好了一个Silverlight程序,这是我们需要部署程序到IIS。我的程序使用WCF RIA SERVICE+Silverlight开发。先看下我的环境:
系统:WIN7 64bit
IIS:IIS7 ,.NET 4.0,Silverlight 4
首先以管理员身份运行命令行:
run "c:\windows\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis -i"
run "c:\windows\Microsoft.NET\Framework\v4.0.30319\ServiceModelReg.exe -i"
确保iis支持.net4
1:我们先发布程序,如下图,在***.WEB项目右键—>Publlic.
2:先发布程序到文件系统,选择File System,选择存放路径。然后单击publish。
在发布的目录中有bin文件夹,里面存放的是你程序引用的dll,ClientBin中存放XAP包。外面是一些页面和web.config。
3:打开IIS,在Default Web Site添加应用程序,名字为test,程序池选择的是DefaultAppPool。
4:浏览网站,出现500错误,主要是目录访问权限问题。
打开文件夹属性—>安全,添加IUSER,和IIS_IUSERS用户,并给予修改的权限。
5:刷新网页,出现框架版本问题,我们修改DefaultAppPool程序池,选择.NET版本为4.0。
6:再次刷新程序,靠,又出现未找到程序集错误。 因为在服务器上我们没有装RIA SERVICE,可以在这个地方下载http://www.silverlight.net/getstarted/riaservices/。如果你没有权限在服务器上面安装,可以通过下面拷贝程序集的方法来解决此问题。
选择图中的三个程序集,在属性窗体中选择复制到本地设置为True.然后重新发布一次。
7:在此运行程序,嗯,这下程序显示出来了。但是无法找到服务。
对每一个DomainService,和WCF在运行时被动态的创建,地址是域名/DomainService类名-DomainService类名.svc。如果你的DomainService类在命名空间VDP.Service.Web,类名是CustomerContext,那么地址是:http://www.yourdomain.com/VDP-Service-WEB-CustomerContext.svc。
如果经过上面的设置还未能解决,则需要检查IIS身份验证。因为WCF不支持多重验证架构。
如果你的程序使用FORM验证,在IIS对应的虚拟目录页需要启用Form验证,表单验证+匿名验证也可以正常运行。如果是表单验证+集成验证的话则不可以。
同样如果你使用WINDOWS验证,确保启用了集成验证。
看下图,我启用了Windows验证和Form验证,所以我需要停止到Windows验证。
禁用WINFORM验证。
通过上面的一系列配置,程序成功的部署到了IIS7。
参考资料:
http://blogs.msdn.com/b/saurabh/archive/2010/03/16/ria-services-application-deployment.aspx
http://www.cnblogs.com/haio/archive/2010/07/12/1775809.html