将会话变量从asp代码传递给C#代码

时间:2016-03-24 15:21:48

标签: c# asp.net vbscript asp-classic session-variables

我有一个.asp代码,我在其中生成了几个会话变量,然后我将其重定向到c#doe。我试图将这些来自.asp代码的会话变量读入我的C#代码,但似乎我无法将这些变量传递到我的c#代码中。当我仍然在.asp部分时,我可以得到会话变量的值,但是一旦我重定向到c#代码并尝试获取会话变量(及其值),该值就不会出现。

asp部分:

response.write("Session(oldID)=&Session("oldID"))

c#part:

string oldIDSession = (string)(Session["oldID"]);

2 个答案:

答案 0 :(得分:3)

Classic ASP Web应用程序和ASP.NET Web应用程序(C#代码)在IIS的单独应用程序域中运行,因此无法共享会话值。

您可以使用查询字符串或向C#代码发出直接发布请求,将所需数据共享到ASP.NET(C#)Web应用程序。

请参阅this post以了解使用查询字符串将数据传递到C#页面。

或者,对于使用POST发布数据(如果您需要将大量数据发送到c#代码),请将asp页面中表单的action属性更改为应将数据发布到的c#(aspx页面)。

修改

在经典的asp页面中,您需要执行类似(refer this)的操作:

<form action="http://example.com/TestApp/YourPage.aspx" method="post">
    // form elements
</form>

然后,要阅读c#页面中的发布值,您需要使用(refer this):

string paramValue = Request.Form["key"]; // where key is the parameter name

答案 1 :(得分:-1)

请参阅this post

我不确定您的应用程序的规模或性质,但我建议不要让您的C#类依赖于会话,它们很容易测试。例如。

//In your Asp.Net
int productId = (int)Session["productId"];

//In you c# code
public Product GetProductById(int productId){

}