Silverlight发布到IIS上

来源:互联网 发布:阿里云的服务器怎么样 编辑:程序博客网 时间:2024/05/17 06:19

将Silverlight发布到IIS6上是件麻烦的事情,不知道为什么MS没有考虑简化操作。

 

步骤如下:

1)IIS6 本身不支持Silverlight,所有要添加MIME,分别是:

.xaml  text/xml

.xap   application/x-silverlight-app

 

2)如果XAP中使用了Webservice,则需要在编译的时候修改配置文件(不明白为什么在代码中修改无效)

3)如果XAP中想嵌入HTML显示(即类似于iFrame),非常遗憾MS不支持,除非安装在客户端。

   变通的办法:将一个XAP文件拆分成多个,用Frameset构造。

 

PS 因为Silverlight用到了Framework3.5或4.0,如果网站中还有2.0的程序的话,需要增加应用程序池,因为一个池里面不能包含两套框架。

 

网站如果应用了Silverlight技术,直接部署到IIS中是无法正常运行的,因为Silverlight应用所对应的三种MIME类型没有在IIS中注册,所以Silverlight相关的文件无法下载到客户端,而Silverlight又是客户端应用,这样网站运行不正常。

 

Silverlight的发布涉及三种类型的文件:.xap, .xaml, .xbap,这些后缀名对于IIS6和IIS7来说都是新的,他们对应的

 

MIME类型没有默认被添加到IIS中,所以需要手动进行注册,注册的内容为:


.xap     application/x-silverlight-app
.xaml    application/xaml+xml
.xbap    application/x-ms-xbap

      注册MIME类型的方法,打开IIS,在网站或默认网站上右击,选择属性,点击 ‘HTTP头选项卡’找到“MIME类型(M)”按纽,点击进行对MIME类型的新建。添加MIME完成后将网站和对应的应用程序池重启,重新打开网站即恢复正常。

 

 

WCF RIA Services 部署问题

我在使用ADO.NET Entity Data Model生成 * .edmx,然后利用Domain Service 生成服务。在Silverlight中调用服务中的方法。以上过程在VS2010中一切正常,当我想将程序部署在IIS6的时候,程序可以跑起来,但是怎么也没办法获得Sql server数据。总是提示“远程服务器返回了错误: NotFound。”;

1:跨越xml已经添加在跟目录;

2:系统所使用的dll均已拷贝纸Bin目录下;

3:利用动态svc地址访问http://localhost:8000/wcf/services/sl_WcfRia-web-hwDomainContext.svc无法获得服务页面,在VS2010运行环境范围时可以访问;

各位朋友,可否知道服务器上那里设置出现了问题,到时svc服务在IIS上无法访问的原因。等待大家的帮助,谢谢!

运行环境情况:

1:开发环境和服务器是一台机器(系统:windows xp;数据库:2005 Sql Server;IIS:5.1)

2:Web.Config 文件如下

<?xml version="1.0" encoding="utf-8"?>
<!--
  For more information on how to configure your ASP.NET application, please visit
  http://go.microsoft.com/fwlink/?LinkId=169433
  -->
<configuration>
  <customErrors mode="On"/>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="DomainServiceModule" preCondition="managedHandler" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </modules>
    <validation validateIntegratedModeConfiguration="false" />
  </system.webServer>
  <system.web>
    <httpModules>
      <add name="DomainServiceModule" type="System.ServiceModel.DomainServices.Hosting.DomainServiceHttpModule, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </httpModules>
    <compilation debug="true" targetFramework="4.0"/>
  </system.web>
  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
    <bindings>
     <basicHttpBinding>
        <binding name="fooSoap" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <security mode="Transport" />
        </binding> 
      </basicHttpBinding>
    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <dataContractSerializer maxItemsInObjectGraph="2147483647" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
</configuration>

 
问题描述如上:
先把解决方案写到下面:
1.至于如何创建wcfria服务,暂时不累赘了,如果不知道就到我的资源文件里面有个文档叫“

Silverlight RIA Services Class Library类库使用

”自己下载阅读
2、创建好wcfria服务并在程序调试好后,就是发布到iis
步骤如下:
1:安装IIS
2:安装frmwork4.0(2、3、4步应该开发时都应装好的)
3:安装Silverlight_4_Toolkit_April_2010.msi
4:建创网站的虚拟目录
5:从开发机拷备System.ServiceModel.DomainServices.Hosting和System.ServiceModel.DomainServices.Server到生产机的C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL这个目录
6:拷备clientaccesspolicy.xml文件到wwwroot目录
7:从开发机拷备拷备System.ServiceModel.DomainServices.Hosting.OData和System.ServiceModel.DomainServices.EntityFramework到生产机 C:\WINDOWS\Microsoft.NET\assembly\GAC_MSIL这个目录
8:配置IIS
   (1):wev服务扩展->允许asp.netv4.0
   (2):网站属性->文档->添加默认文档(如:Investoday.Yankee.ThirdPartyTestPage.aspx)
   (3):网站属性->目录安全性->把身份验证只设置成启用匿名方部,去掉集成windows身份验证
   (4):网站属性->Asp.net->选择Version版本为4.0
   (5):网站属性->Http头->点击MIME类型->添加.xaml:application/xaml+xml和.xap:application/x-silverlight-app的映射
   (6):重启IIS->运行命令:iisreset


经过上述步聚,部署就可以成功(操作系统:windows 2003 sp2,windowsxp 均可)

 

原创粉丝点击