C# 在ASP中暂时禁用模拟

C# 在ASP中暂时禁用模拟,c#,asp.net,iis,asp-classic,impersonation,C#,Asp.net,Iis,Asp Classic,Impersonation,我正在编写一个内部网系统,它通过使用ADODB.Stream的脚本将文件本地写入Web服务器。问题是,它使用已登录的Windows/AD用户帐户来执行此操作,因为模拟在IIS中默认情况下处于激活状态,而我实际上大部分时间都需要激活它。因为我不想给任何需要使用系统的人授予对Web服务器的写访问权,所以我需要暂时“取消”会话并将其返回到“IUSR”帐户 我怎么能这么做?优先使用经典ASP,因为整个站点都在其中编码,但也可以是ASP.net(C#)中的内容 我在一家大公司工作,访问IIS控制面板/服务

我正在编写一个内部网系统,它通过使用
ADODB.Stream
的脚本将文件本地写入Web服务器。问题是,它使用已登录的Windows/AD用户帐户来执行此操作,因为模拟在IIS中默认情况下处于激活状态,而我实际上大部分时间都需要激活它。因为我不想给任何需要使用系统的人授予对Web服务器的写访问权,所以我需要暂时“取消”会话并将其返回到“IUSR”帐户

我怎么能这么做?优先使用经典ASP,因为整个站点都在其中编码,但也可以是ASP.net(C#)中的内容


我在一家大公司工作,访问IIS控制面板/服务器的权限有点有限(需要与其他部门打交道)。而且我也不能安装任何自定义模块或DLL。

过去我使用
Msxml2.ServerXMLHTTP
进行服务器端调用,使用HTTP授权头切换模拟上下文。这允许我使用与网站运行环境不同的上下文创建文件

Sub-ExecuteContext(url、数据、用户、密码)
暗淡的http
设置http=Server.CreateObject(“Msxml2.ServerXMLHTTP”)
Response.CharSet=“utf-8”
调用http.open(“POST”、url、False、用户、密码)
'使用基本身份验证调用(不如Windows安全,由身份验证应足够)
调用http.setRequestHeader(“授权”、“基本”和Base64Encode(用户&“:”和密码))
调用http.setRequestHeader(“内容类型”,“应用程序/x-www-form-urlencoded”)
调用http.send(数据)
端接头
'支持执行Base64编码的授权标头的函数。
函数base64编码(inData)
“摘自:
'http://www.pstruh.cz/tips/detpg_Base64Encode.htm
'rfc1521
2001年安东宁·福勒,PSTRUH软件公司,http://pstruh.cz
常量Base64=_
“ABCDEFGHIJKLMNOPQRSTUVWXYZABDEFGHIJKLMNOPQRSTUVXYZ0123456789+/”
暗淡的苏特,我
'对于每组3个字节
对于I=1至Len(inData)步骤3
脸色苍白、撅嘴
'从这3个字节创建一个长的。
n组=&H10000*Asc(Mid(inData,I,1))+_
&H100*MyASC(Mid(inData,I+1,1))+_
MyASC(Mid(因达塔,I+2,1))
'Oct使用3位将长分组拆分为8组
nGroup=Oct(nGroup)
'添加前导零
nGroup=String(8-Len(nGroup),“0”)&nGroup
'转换为base64
pOut=Mid(Base64,CLng(&o“&Mid(nGroup,1,2))+1,1)+_
Mid(Base64,CLng(&o)和Mid(nGroup,3,2))+1,1+_
Mid(Base64,CLng(&o)和Mid(nGroup,5,2))+1,1+_
Mid(Base64,CLng(&o)和Mid(nGroup,7,2))+1,1)
'将部件添加到输出字符串
sOut=sOut+撅嘴
下一个
选择案例Len(inData)Mod 3
案例1:“8位最终
sOut=左(sOut,Len(sOut)-2+“=”
案例2:16位最终版本
sOut=左(sOut,Len(sOut)-1+“=”
结束选择
Base64Encode=sOut
端函数
函数MyASC(OneChar)
如果OneChar=”“,则MyASC=0,否则MyASC=Asc(OneChar)
端函数

这种方法非常灵活,在我的实现中,我使用它来更改同一页面中的上下文,方法是通过发布到自身,但使用不同的
数据

我以不同的方式解决了模拟问题。刚刚编写了一个ASP.net脚本,使用基于的
HttpPostedFile
保存文件,它的工作非常出色。这些文件(可能)正在IIS中配置的应用程序池用户下写入。

可能重复:。虽然它是用C#完成的,而不是经典的ASP。这里涉及到什么版本的IIS?我自己已经找到了答案,但我对这一点投了赞成票,因为这是一种非常有趣的技术。