Response.Redirect в объекте COM +, вызываемом из классической страницы ASP - PullRequest
0 голосов
/ 22 марта 2010

В основном мы перешли с IIS 5 на IIS 7, и я пытаюсь обновить некоторые из наших старых объектов COM до .NET, переписав их в C #. До сих пор у меня есть классическая 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 ]

2 голосов
/ 22 марта 2010

HttpContext будет установлен только в контексте настройки ASP.NET. Поскольку вы звоните из ASP classic, он не будет привязан к фактическому потоку запросов / ответов.

Что вам нужно сделать, это указать, следует ли перенаправить объект COM +, и вызвать классический ASP, эквивалентный перенаправлению.

2 голосов
/ 22 марта 2010

ASP.Net Response.Redirect использует стек ASP.Net, который не используется на странице ASP.

Вам нужно либо отключиться от ASP, либо вызвать ASP Response.Redirect.

...