做法上完全不是sharePoint开发应该的方法,实在是投机取巧。不过刚接触sharepoint和.net。很多东西都没有理解,实在是没有办法的办法。
首先公司有些老的asp程序,不想重写,其实是还不会重写成 .net 嵌入MOSS2007。也不会写webparts,只是写了个显示“hello world”的webparts。
我先建立了一个子网站http://moss:9999/pic/,再在子网站建立一个空白页default.aspx。目标就是改掉 pic 的母版以及default.aspx,在default.aspx 嵌入一个iframe,把老的asp程序装进来。
需要改母版,是因为不需要moss原来的左边的那条“查看所有网站内容”菜单栏。老程序里也有类似的菜单栏,会重复。
我先把网站默认的default.master下载了一个到本地,所有的母板页都在,网站设置->所有网站设置->母版页和页面布局 这里。下回去后改个名字比如 hq.master,然后上传。
到http://moss:9999/pic/下的 网站设置->母版 里把母板给改成你上传的 hq.master。
在sharepoint designer 里面打开 http://moss:9999。在_catalogs/masterpage/ 目录下找到 你上传的 hq.master,修改它。
只保留head,把下部包括左边的菜单部分全部删除。写个自己的
<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server"></asp:ContentPlaceHolder> 用来放iframe。
然后在sharepoint designer 里打开 http://moss:9999/pic/ 把default.aspx 修改。因为母版删除了一些ContentPlaceHolder,所以这里也要删除对应的一些Content,否则会出错。
重写<asp:Content ContentPlaceHolderId="PlaceHolderMain" runat="server"> 写个不带滚动条的 iframe。
在c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS 新建个目录 PIC。把老的asp程序拷贝到这个目录下。IIS 需要把这个目录设置一下,目录标签里的应用程序设置,应用程序名那里点创建,然后应用程序池选对应站点的。点配置,把父路径给启用。
不要把整个站点的父路径启用,否则你就等着重配moss吧。:'( 教训啊。
把iframe的src指到 /_layouts/PIC/Default.aspx。其实基本就可以用了。可能母版那里比较难弄,只要有耐心,把ContentPlaceHolder 和content对应好就肯定没问题了。
也许你还需要一些用户权限方面的控制,需要知道登录的用户,建立用户的session。因为asp.net和asp的session是不通用的。我是把登录的用户用asp.net生成Cookies,然后用asp读取,再生成asp的session。用户就不验证了,已经登录了么,而且是基于域的。不过asp也是可以通过 ADSI 活动目录服务接口 登录域的,可以读取管理域用户,当然还是没法读域用户密码。
/_layouts/PIC/Default.aspx 这样写
<% Response.Cookies("userName").Value = HttpContext.Current.User.Identity.Name 'moss登录的域以及用户名
Response.redirect("index.asp") %>
/_layouts/PIC/index.asp 这样写
<% username=Request.Cookies("username")
session("user")=right(username,Len(username)-InStr(username,"\"))
session("domain")=left(username,InStr(username,"\")-1) %>
都修改好以后,你用管理员身份看http://moss:9999/pic/,应该就已经全部变掉了。但是用普通用户登录的还没有变,可能还出错。因为hq.master还没有发布和批准。在 网站设置->所有网站设置->母版页和页面布局 把hq.master 发布批准,全部就ok了
作者:phg79
相关文章
同类最新