幾條在SharePoint中使用SilverLight注意事項
在SharePoint中使用SilverLight,說起來雖然簡單,但是還是折騰了我一些時間:
在SharePoint中使用SilverLight注意事項
首先,需要將Silverlight程序中產(chǎn)生的xap文件拷貝到您的sp站點可以訪問到的地方。然后創(chuàng)建一個webpart,在其中創(chuàng)建Silverlight的實例對象,然后為其指定Source="****.xap"特別注意的是,SilverLight的運行需要ScriptManager的支持。
在我練習(xí)的過程中,主要遇到的問題是web.config文件對sl的支持,及相關(guān)MIME頭的添加。
--web.cofig添加對sl的支持:
1、在原文件的configSections中添加一段sectionGroup,如下:
- <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
- <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
- <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
- <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
- <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="Everywhere" />
- <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
- <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
- <section name="roleService" type="System.Web.Configuration.ScriptingRoleServiceSection, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" allowDefinition="MachineToApplication" />
- </sectionGroup>
- </sectionGroup>
- </sectionGroup>
2、在system.web的httpHanders和httpModules節(jié)結(jié)束處分別加入如下:
- <remove verb="*" path="*.asmx" />
- <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false" />
- <add name="PublishingHttpModule" type="Microsoft.SharePoint.Publishing.PublishingHttpModule, Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
3、在compliation的assemblies節(jié)中加入如下:
- <!--如果您的是3.5的NET Framework的話,可能還需要加上如下:
- <add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
- <add assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
- <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089" />
- -->
- <add assembly="System.Web.Silverlight, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
4、如果是在IIS7中的話,需要加上如下:
- <system.webServer>
- <validation validateIntegratedModeConfiguration="false" />
- <modules>
- <remove name="ScriptModule" />
- <add name="ScriptModule" preCondition="managedHandler" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- </modules>
- <handlers>
- <remove name="WebServiceHandlerFactory-Integrated" />
- <remove name="ScriptHandlerFactory" />
- <remove name="ScriptHandlerFactoryAppServices" />
- <remove name="ScriptResource" />
- <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- <add name="ScriptResource" preCondition="integratedMode" verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
- </handlers>
- <security>
- <authorization>
- <add accessType="Allow" users="" />
- <add accessType="Allow" users="?" />
- </authorization>
- </security>
- </system.webServer>
--經(jīng)過上述處理,應(yīng)該就可以完成SP中支持SL了。
特別提醒在SharePoint中使用SilverLight注意事項:如果您是網(wǎng)上找的web.config模板的話,特別注意其中的machineKey這個節(jié)點,把它改成您原來config值,不然的話,連您的sp站點都掛了。
---
接下來的事,就加入承載Silverlight的webpart享受了~~~~
但是:您還有可能碰到這個情況:在SL區(qū)域點右鍵已經(jīng)可以看到silverlight的runtime信息了,可是這個區(qū)域卻是一片空白??
原因就在于Silverlight中需要使用xap、XAML文件類型
所以必須在IIS中注冊xaml和xap的MIME文件類型。打開IIS->站點屬性->HTTP頭->MIME類型->新建:
擴展名: .xap
MIME類型:xapapplication/x-silverlight
擴展名: .xaml
MIME類型:application/xaml+xml
---
在SharePoint中使用SilverLight注意事項:最后在啰嗦一下web.config
其中,在vs08中創(chuàng)建sl-application的時候,就會提示您是否創(chuàng)建host站點。選擇創(chuàng)建后,看看它的web.config有哪些是運行sl需要的,把它copy到sharepoint的web.config對應(yīng)位置即可。
在SilverLight程序中,最好不要使用到.NET 3.5下相關(guān)的技術(shù),比如linq等,因為.net20(SharePoint07運行在.net20下)不支持這些東東。
復(fù)制相關(guān)的web.config節(jié)的時候,去除.net3.5下的東東即可。還有一個不需要復(fù)制的,就是pages節(jié)點下的<controls>關(guān)于asp:SilverLight等的注冊。
【編輯推薦】