首页 > 编程语言 >在MOSS中直接嵌入ASP.NET Page zt

在MOSS中直接嵌入ASP.NET Page zt

时间:2023-06-08 19:01:06浏览次数:40  
标签:ASP Documents MOSS zt NET aspx Page


在MOSS Document Library中的Page,有Basic Page和WebPart Page两种,前者更多的体现WCM特性,后者则更侧重体现Portal特性。

不管是Basic Page还是WebPart Page,都是直接和MOSS本身结合非常密切,都直接采用Site中的MasterPage。如果我们想把一个普通的ASP.NET Page也加到MOSS站点里运行,比如也放在Document Library里,或者放在Site某个文件夹下面,然后通过MOSS站点URL直接访问运行该ASP.NET Page,就需要做一些工作了。这里就准备介绍这么一个Tip来完成这件事。我想,这种应用方式主要是针对一些需要特殊页面效果,或者追求短平快的小量自定义的场景的,也不失为各类复杂应用场景提供一个可以方便Work Around的通道。正常应用场景中一般比较少用到。

1、首先从最简单的Hello World Page开始。点击此处查看 HelloWorld.aspx 源代码

2、将HelloWorld.aspx上传到Documents文档库中。此时,你直接点击文档库中的HelloWorld.aspx进行浏览,其URL类似http://localhost/Documents/HelloWorld.aspx,将出现"An error occurred during the processing of /Documents/helloworld.aspx. Code blocks are not allowed in this file."的错误异常。通过这个异常信息也就知道,其实我们要做的就是允许在Page Server Code能被顺利编译执行

   

   

3、修改MOSS Site的web.config,比如C:\Inetpub\wwwroot\wss\VirtualDirectories\80\web.config。找到PageParserPaths这么一个节点,修改如下:

<PageParserPaths> 
    <PageParserPath VirtualPath="/Documents/helloworld.aspx" CompilationMode="Always" AllowServerSideScript="true" /> 
</PageParserPaths>

4、重新浏览http://localhost/Documents/helloworld.aspx,页面正常被编译执行。

至此已经验证普通的ASP.NET Page是可以顺利集成在MOSS中被执行的。可以看到CompilationMode="Always"就意味着这个操作是属于"不得已而为之"的了,但这类不得已的场景现实应用中毕竟还是存在的。下面发散思维,扩展下思路。

5、我们把SharePoint的一些接口也写在这个普通ASP.NET Page里,从这个ASP.NET Page去操作SharePoint的库表等相关信息。点击此处查看 HelloSharePoint.aspx源代码

6、将 HelloSharePoint.aspx上传到Documents文档库中。修改Web.config的PageParserPaths节点如下。表示Documents文档下所有页面都允许服务器端脚本并进行编译运行。

   

<PageParserPaths> 
<PageParserPath VirtualPath="/Documents/*" CompilationMode="Always" AllowServerSideScript="true" IncludeSubFolders="false" /> 
</PageParserPaths>

   

 7、浏览http://localhost/Documents/HelloSharePoint.aspx,点击GetItems按钮,正常获取到Documents文档库下所有Item的Name列表。

至此说明在被嵌入的ASP.NET Page可以利用SharePoint API操作SharePoint各类库表数据。可以看到多了一个IncludeSubFolders="false"的配置,如果为true则表示包括子文件夹在内所有页面每次都要编译运行。通过这个例子说明,我们甚至可以把这个普通的ASP.NET Page页做得和所在Site的页面风格一致,这样就达到瞒天过海了,在该ASP.NET Page内的操作感觉就如同在同一个MOSS Site中操作一般。

8、再延伸下思路。可以尝试把一些复杂业务逻辑操作封装在Assembly中,然后再在ASP.NET Page里调用即可。有兴趣者自己可以尝试这块操作。主要在ASP.NET Page中加入类似声明:

<%@ Register Tagprefix="MyAssembly" Namespace="ClassLibrary1" Assembly="ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=671d8e00903f3760" %>

最后,我在说上述异常错误时说"我们要做的就是允许在Page Server Code能被顺利编译执行",那么对于Basic Page,WebPart Page等MOSS自己的Page,是否也可以在内部增加Server Code,然后配置PageParserPath来运行这些Server Code呢?答案是肯定的。

希望你的项目设计中尽量少考虑这个特性,但如果必须用,希望本文对你有所帮助。

作者:liuhuimiao

   

标签:ASP,Documents,MOSS,zt,NET,aspx,Page
From: https://blog.51cto.com/u_4506734/6442305

相关文章

  • 每个 ASP.NET 开发人员都应该知道的 IIS 管道中的 HTTP 请求生命周期事件
    原文:https://www.dotnetcurry.com/aspnet/747/http-request-lifecycle-events-iis-pipeline-aspnet......
  • asp.net里cookie、session进一步理解
    参照:session+cookie简单讲解以及持久化登录实现_session实现用户登录_AkagiSenpai的博客-CSDN博客sessionID和cookie-哈哈呵h-博客园(cnblogs.com)概念介绍cookie——是http无状态特性的补充,是在客户端保持状态的方案,以key/value的形式进行保存。网站经常使用这个技术来......
  • 基于Raspberry 的 libcamera 使用
    1.libcameraandlibcamera-apps工具简介I.libcamera是一款用来支持用户基于Linux操作系统控制复杂相机的应用程序,用户可以通过libcamera直接操作树莓派芯片集成的GPU模块。II.libcamera开放了基于C++语言的应用程序接口用于配置相机并从相机获取图像的功能API,同时libcam......
  • Asp.Net Core 程序部署到Linux(centos)生产环境(二):docker部署
    运行环境照例,先亮环境;软件的话我这里假设你已经批准好了.netcore运行环境,未配置可以看我的这篇[linux(centos)搭建.netcore运行环境]腾讯云centos:7.2cpu:1核2G内存1M带宽docker:18.06.1-ce安装docker安装其实很简单,就不重复说了,请查看纯洁大神这篇文章准备你的.netcoreweb程......
  • aspose word与pdf互转
    asposeword与pdf互转packagecom.example.core.mydemo.aspose;importcom.aspose.words.Document;importcom.aspose.words.License;importcom.aspose.words.SaveFormat;importjava.io.ByteArrayInputStream;importjava.io.File;importjava.io.FileOutputStream;......
  • 手把手教你AspNetCore WebApi:Swagger(Api文档)
    前言小明已经实现“待办事项”的增删改查,并美滋滋向负责前端的小红介绍Api接口,小红很忙,暂时没有时间听小明介绍,希望小明能给个Api文档。对于码农小明来说能不写文档就尽量不要写,不过这也难不倒小明,他知道Swagger不仅可以自动生成Api文档,并还可以用Swagger进行接口测试。Swagger是什......
  • 手把手教你AspNetCore WebApi:数据验证
    前言小明最近又遇到麻烦了,小红希望对接接口传送的数据进行验证,既然是小红要求,那小明说什么都得满足呀,这还不简单嘛。传统验证[HttpPost]publicasyncTask<ActionResult<Todo>>PostTodo(Todotodo){if(string.IsNullOrEmpty(todo.Name)){returnOk("名称不......
  • 手把手教你AspNetCore WebApi:Serilog(日志)
    前言小明目前已经把“待办事项”功能实现了,API文档也搞定了,但是马老板说过,绝对不能让没有任何监控的项目上线的。Serilog是什么?在.NET使用日志框架第一时间会想到NLog或是Log4Net,Serilog是这几年快速崛起的Log框架之一,Serilog是以Structuredlogging为基础进行设计,透过loggingAP......
  • 手把手教你AspNetCore WebApi:缓存(MemoryCache和Redis)
    前言这几天小明又有烦恼了,系统上线一段时间后,系统性能出现了问题,马老板很生气,叫小明一定要解决这个问题。性能问题一般用什么来解决呢?小明第一时间想到了缓存。什么是缓存缓存是实际工作中非常常用的一种提高性能的方法。缓存可以减少生成内容所需的工作,从而显著提高应用程序的性能......
  • ASP.NET Core MVC 项目在IIS中部署
    一、vs中把MVC项目以文件系统发布、设置保存的路径二、安装.NETCore3.1Runtime网址:https://dotnet.microsoft.com/download/dotnet-core/thank-you/runtime-3.1.5-windows-x64-installer 三、安装AspNetCoreModule网址:https://dotnet.microsoft.com/download/dotne......