- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在将旧的 VBScript WSC 组件重写为更好的 C# COM 组件。
由于一个可怕的原因,一个地方的旧组件通过使用传递给服务器上下文,IServer
Set objCurr = CreateObject("MTxAS.AppServer.1")
Set objCurrObjCont = objCurr.GetObjectContext()
Set component.servercontext = objCurrObjCont("Server")
然后使用它来执行标准的 Server.MapPath("/somelocation")
但是我对在 .Net COM 组件中做什么感到困惑,System.Web.HttpContext.Current.MapPath()
没有按预期工作,因为没有 Web 上下文。
我尝试将上下文从经典 ASP 传递到 COM 组件,但我不确定要包含哪个引用以便我可以调用正确的成员,Microsoft.Active X Data Objects 2.7 似乎很常见,但这只包括 Recordsets等等,对于 C++ IServer 接口(interface)没有任何意义,所以它作为 COM OBJECT
出现。
有谁知道执行此操作/解决方法的方法吗?按照这个速度,我想我可能必须改变组件的行为
最佳答案
将 ASP.dll 互操作添加到您的 C# 项目(您将在\system32\inetsrv 文件夹中找到它。
将公共(public)方法添加到由 ASP 实例化的类中:-
ASPTypeLibrary.ScriptingContext context;
public void OnStartPage(ASPTypeLibrary.ScriptingContext sc)
{
context = sc;
}
现在,当您需要 MapPath 时,请使用:-
context.Server.MapPath("...");
除了服务器之外,注释上下文还可以让您访问请求、响应和 session 。 OnStartPage 是 ASP 使用的 COM+ 之前的 hack,即使在最新版本中也仍然有效。 ASP 执行 COM 等效反射(检查 COM 类类型库信息)以确定公共(public) OnStartPage 方法是否可用,如果可用,则调用它并传递 ScriptingContext 对象。
没有可用的 .NET HttpContext,请求必须首先由 .NET 处理才能存在。 HttpContext 不能按原样“事后”在线程上创建。因此,如果您的组件需要与 Http 对话进行交互,则必须通过 ASP 上下文对象进行交互,因为 ASP 是实际处理请求的主机。
关于c# - COM 组件中的 Server.MapPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/911271/
谁能解释一下 Server.MapPath(".")、Server.MapPath("~")、Server.MapPath(@"之间的区别\") 和 Server.MapPath("/")? 最佳答案
Server.MapPath() 和 HostingEnvironment.MapPath() 有区别吗? Server.MapPath() 是否比 HostingEnvironment.MapPat
我想使用Server.MapPath()方法来映射虚拟目录 我创造了它的物理路径。 问题是.net环境无法识别Server.MapPath()。 Google告诉我,我应该使用System.Web使用
我的文件结构设置如下: ServerRoot applicationRoot filePage.aspx files chart.png 我的应用程序页
我的业务层创建文件并需要将它们保存在我的 asp.net mvc 4 网络前端的 App_Data 文件夹中。 我可以在业务层使用Server.MapPath 来获取App_Data 文件夹的物理路径
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界. 这篇CFSDN的博客文章ASP的Server.MapPath()不同参数返回路径总结由作者收集整
我正在尝试使用 T4 模板获取 Views 文件夹中的文件夹名称,但它不断给我以下错误: 错误 3 编译转换:名称“服务器”在当前上下文中不存在 c:\Projects\LearningASPMVC\
我使用 Server.MapPath 访问服务器上的一些图像。我得到了正确的路径,但无法打开它。我得到的错误是: Not allowed to load local resource: d:/Proj
所以我有一个网络应用程序。 在 IIS 中,我有一个站点 WEBSITE,我的应用程序是从 WEBSITE 拥有的子站点 APPLICATION 运行的。 机器上的物理路径与返回的 HostingEn
我对 server.mappath 有点困惑哪个是正确的,这两个之间有什么区别 FileUpload1.saveAs(Server.MapPath("~/User/images/")+"ankush.
所以我正在读一本关于 asp.net 安全的书。其中一个部分是:如何防止目录遍历文件名(被黑的文件名)。 所以这行代码是: string fullPath = Server.MapPath(Syste
我有一个图像存储在服务器上的位置: C:\inetpub\wwwroot\imageupload\images 在我的代码中,我想使用文件夹 images 中的图像,所以我尝试如下: Server.M
我有一个 asp.net MVC 应用程序,我想获取远程地址以访问某个文件。 在我的 img 标签中,我使用了 ~/ 截至 在这种情况下,波浪号将被解释。 但我想通过 javascript 创建标签,
我有一个 MVC 应用程序并部署到服务器,我只有 ftp 访问权限,应用程序的名称是 test.foo.com。有一个后端,用户可以将图片上传到应用程序。一切都很好。代码如下: //in web co
我有一个 Web 应用程序,其中有许多类库项目。下面是一些示例代码。 public static class LenderBL { static string LenderXml { get
我有一个方法。从硬盘中检索文档。我无法通过单元测试对此进行测试。它总是抛出异常无效的空路径或其他东西。如何测试。我临时为单元测试创建了 session 。但我不能为这个 Server.MapPat
在我的 MVC4 项目中我有命名空间 prj.MVC4.Controllers 在我使用 Server.MapPath(..) 的地方没有问题并且在 prj.MVC4.Models Server.Ma
我有一个 C# 模型类,我试图访问一个 .cshtml 页面,它应该是一个电子邮件格式模板。我正在使用以下代码: string body = string.Empty; using (StreamRe
我有一个包含少数项目的 Visual Studio 2008 解决方案。一个项目包含一个 WCF Service我正在部署。该 WCF 服务引用了其他项目之一中的一些代码。该代码试图读取 WCF 项目
我注意到 Server.MapPath() 中有些奇怪的地方。如果我有一个末尾有空格的文件夹,我会得到: HttpException: Failed to map the path. 这很好用:Ser
我是一名优秀的程序员,十分优秀!