从经典ASP页面调用的COM +对象中的Response.Redirect

时间:2010-03-22 16:11:41

标签: c# com iis-7 asp-classic

基本上我们从IIS 5迁移到IIS 7,我试图通过在C#中重写它们来将一些旧的COM对象更新为.NET。到目前为止我所拥有的是一个经典ASP页面调用COM +对象,然后我试图在COM +对象中进行简单的重定向(这只是为了测试目的,它不是对象最终会做什么)。

我的问题/问题是,为什么重定向呼叫无法正常工作?我做错了什么或者你不能在COM +对象中重定向?所有这一切都是一个空白的白页出现,如果我检查IIS日志,我看到没有错误。

到目前为止,这是我的代码:
在Classic ASP(调用COM +)

Set oBankReg = CreateObject("BVSRegistration.SignIn")  
oBankReg.GetBankId(bankid)

C#COM对象中的代码:

using System;  
using System.Web;  
using System.Text;  
using System.EnterpriseServices;  
using System.Collections.Generic;  
using System.Runtime.InteropServices;  

[assembly: ApplicationName("BVSRegistration")]  
[assembly: Description("COM+ upgrade of the BVSRegistration VB6 SignIn.cls.")]  
[assembly: ApplicationActivation(ActivationOption.Server)]  
[assembly: ApplicationAccessControl(false, AccessChecksLevel = AccessChecksLevelOption.ApplicationComponent)]  

namespace BVSRegistration  
{   
    public class SignIn : ServicedComponent       
    {    
        public void GetBankId(string bankid)  
        {  
            HttpContext.Current.Response.Redirect("http://www.google.com");  
        }  
    }  
}  

有什么想法吗?感谢

2 个答案:

答案 0 :(得分:2)

ASP.Net的Response.Redirect使用ASP.Net堆栈,该堆栈未在ASP页面中使用。

您需要切换远离ASP或调用ASP的Response.Redirect

答案 1 :(得分:2)

HttpContext只能在ASP.NET设置的上下文中设置。由于您使用ASP classic进行调用,因此它不会绑定到实际的请求/响应流。

您应该做的是指示是否从COM +对象重定向,并调用经典ASP等效于重定向。