说来实在很惭愧,这么长时间了,才想起开始我的下一篇博客。不找客观理由了,什么公司不让上网云云,一个字“懒”,狂抽耳光ing.........
今天就记录一下我当时发布silverlight网站的过程:
1.在vs中发布网站。
在web项目上右键,点击发布。出现发布对话框,我一般选择发布方法为文件系统。
2.修改xap包的ip地址
我感觉这是第一次发布不成功的最主要原因,导致出现什么有登录页(宿主页面),一登录就空白等等问题的元凶。
首先找到你发布的网站文件,找到一个叫ClientBin的文件夹,打开以后有一个后缀名为 .xap的文件。不要以为这是无法打开的 文件,用解压文件就能打开。但是不要解压他,只要在解压文件中修改就行。
用解压软件打开以后,找到一个后缀名为 .ClientConfig的文件,用记事本打开,修改address的ip地址为你网站的ip地址。
<endpoint address="http://10.84.0.55/Service1.svc" binding="customBinding" bindingConfiguration="CustomBinding_Service11" contract="ServiceReference2.Service1" name="CustomBinding_Service11" />
3.在iis中发布
以上工作做完了,就可以上传服务器在IIS中发布了。
至于发布的步骤就参考这个博客吧
http://blog.163.com/sara1124@126/blog/static/11291097020091115102242173/
发布完了,还有一个问题:Silverlight作为一个比较新的技术,老版本的iis上不支持那些新的后缀,不知道该怎么解析.xap。所以要添加http头。
“网站”——右键——“属性”——“HTTP头”——“文件类型”——“新类型” 添加以下的几个类型,这样iis就支持Silverlight 了。
扩展名: .xap MIME类型:xapapplication/x-silverlight 扩展名: .xaml MIME类型:application/xaml+xml
4.跨域问题。
http://www.cnblogs.com/jasmine_xm/archive/2010/05/10/1731736.html
Silverlight在设计的时候对网络安全方面做了很多考虑,具体可以看Silverlight SDK。跨域通信是通过在其他域的根部署使用正确跨域策略文件的 Web 服务,可以在该域中启用基于 Silverlight 的应用程序要调用的 Web 服务。Silverlight 支持两种类型的跨域策略文件。
· Silverlight 跨域策略 (clientaccesspolicy.xml)
· Flash 跨域策略 (crossdomain.xml) 的子集
通常,如果基于 Silverlight 的应用程序检测到其请求是一个跨域请求,将首先在 Web 服务的应用程序根处查找 Silverlight 跨域策略文件 (clientaccesspolicy.xml)。如果这个请求导致"404 未找到"或其他错误,应用程序将在应用程序根处查找 Flash 跨域策略文件 (crossdomain.xml)。不允许重定向跨域策略文件。此外,跨域策略文件保持对应用程序会话有效。class="Apple-converted-space"> 现在知道了只要在网站中部署一个跨域策略文件,就可以解决Silverlight跨域请求问题。
本人买的教程,是这样配置的,好像wcf要用到配置完的两个文件放在网站的根目录下。
clientaccesspolicy.xml配置文件内容:
<?xml version="1.0" encoding="utf-8"?>
<access-policy>
<cross-domain-access>
<policy>
<allow-from>
<domain uri="*"/>
</allow-from>
<grant-to>
<resource path="/" include-subpaths="true"/>
</grant-to>
</policy>
</cross-domain-access>
</access-policy>
crossdomain.xml 配置文件内容:
<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" />
</cross-domain-policy>
ok,到这基本就完成了,一个silverlight网站就发布完成了。
由于自己也是新手,学习的地方还有很多,有不对的地方还请指正,谢谢!