从同一服务器上的ASP.NET MVC5控制器调用经典ASP

里斯·斯蒂芬斯(Rhys Stephens)

我正在将一个古老的经典asp项目迁移到ASP.NET,但是由于这是一件很大的老事,所以我会分块地进行。因此,我正处于需要他们共同努力的阶段。经典ASP和.NET的文件都在同一个项目中。旧的经典asp项目使用Session变量(新的.NET项目不使用),因此我尝试调用经典的ASP页来执行此操作。

这是经典的asp“桥梁”:

<!--#include virtual="/members/includes/db.config.asp" -->
<!--#include virtual="/members/includes/classes/clsLogin.asp" -->
<!--#include virtual="/members/includes/classes/clsAccess.asp" -->
<!--#include virtual="/members/includes/classes/clsUser.asp" -->
<!--#include virtual="/members/includes/classes/clsEntity.asp" -->
<!--#include virtual="/members/includes/classes/Database/clsDatabase.asp" -->
<!--#include virtual="/members/includes/classes/Helper/clsSessionVars.asp" -->
<!--#include virtual="/members/includes/classes/Helper/clsGlobal.asp" --><%'This file has global functions '%>
<%
Dim userId : userId = CStr(Request.QueryString("userId"))
Dim username : username = Cstr(Request.QueryString("username"))

Dim objAccess : Set objAccess = new clsAccess
Dim objDb : Set objDb =  new clsDatabase
Dim objUser : Set objUser = new clsUser
Dim objLogin : Set objLogin = new clsLogin
Dim objEntity : Set objEntity = new clsEntity

'Set user session etc.
if(Request.QueryString("function") = "session") then    

    Dim userRecord : Set userRecord = objUser.GetUserById(userId) 
    Dim rsEntity : Set rsEntity = objEntity.GetById(userRecord("EntityId"))
    'Login classic asp : Sets the session variables.            
    Call objLogin.LoginUser(userRecord, username, rsEntity) 

'Kill the session i.e. Log out
elseif(Request.QueryString("function") = "kill") then

    Session.Contents.RemoveAll()
    Session.Abandon()   
    Response.Write("Session Killed")

End if
%>

但是,我遇到了真正的问题,无法从.NET Controller调用它并获取存储的会话变量。我尝试了FileWebRequest:

private void SetClassicASPSessionVars(ApplicationUser user)
        {            
            try
            {
                string url = "~/members/includes/classes/aspbridge.asp" + "?function=session&userId=" + Url.Encode(user.UserId.ToString()) + "&username=" + Url.Encode(user.UserName);                
                Uri serverUri = new Uri(url);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverUri);
                request.Method = "POST";

                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    var content = reader.ReadToEnd();
                }                      
            }

            catch (WebException we)
            {
                throw new InvalidOperationException("Error logging in user to classic asp system. User: " + user.UserId + ". Exception: " + we);
            }
        }

这仅读取文件,并且不执行脚本,因此它仅返回源代码,并且未创建会话变量。

我也尝试过HttpWebRequest:

try
            {
                string url = "/members/includes/classes/aspbridge.asp" + "?function=session&userId=" + Url.Encode(user.UserId.ToString()) + "&username=" + Url.Encode(user.UserName);                
                Uri serverUri = new Uri(url, UriKind.Absolute);
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(serverUri);
                request.Method = "POST";

                using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
                {
                    StreamReader reader = new StreamReader(response.GetResponseStream());
                    var content = reader.ReadToEnd();
                }                      
            }

            catch (WebException we)
            {
                throw new InvalidOperationException("Error logging in user to classic asp system. User: " + user.UserId + ". Exception: " + we);
            }

但是,出现错误:无效的URI:无法确定URI的格式。

有人可以为我提供一些指导,让我了解如何使.NET控制器调用经典的ASP页。

在此先感谢,Rhys

控制怪胎

您收到URI错误的原因是因为WebRequest它不会发送到应用程序相对路径的请求,而是需要一个绝对路径。它基本上需要像标准Web浏览器那样到达URL。

因此,请确保您的URL具有完整的路径/主机:

string url = "http://localhost/members/includes/classes/aspbridge.asp" + "?function=session&userId=" + Url.Encode(user.UserId.ToString()) + "&username=" + Url.Encode(user.UserName);                

我以localhost这里为例。您显然希望将主机设置为与调用脚本相同的主机。

NOTE: 我仍然不确定这是否会完全完成您捕获.NET中的Classic ASP会话的目标,但这应该是一个更好的开始。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从同一服务器上的Windows服务发送在ASP.NET MVC应用程序中运行的SignalR广播

来自分类Dev

在asp.net的同一服务器上的应用程序根文件夹外部下载文件

来自分类Dev

ASP.NET MVC5:对具有会话的控制器进行单元测试

来自分类Dev

仅可使用RedirectToAction访问ASP.NET MVC5控制器操作

来自分类Dev

ASP.NET MVC5 RoutePrefix控制器名称

来自分类Dev

1个控制器处理2个模型,ASP.NET,MVC5

来自分类Dev

带有ViewModel的ASP.NET MVC5控制器CRUD(2个模型)

来自分类Dev

Asp.net mvc5 hidden for 不将数据传递给控制器

来自分类Dev

如何使用 ASP.net MVC 在同一控制器内调用函数任务?

来自分类Dev

从Javascript调用ASP.NET MVC 4控制器

来自分类Dev

从 JavaScript 正确调用控制器 - ASP.NET MVC

来自分类Dev

ASP.NET MVC 调用控制器方法 DevExpress

来自分类Dev

ASP.NET MVC 5不调用控制器创建方法

来自分类Dev

Javascript错误导致ASP.NET MVC 5调用控制器方法

来自分类常见问题

Visual Studio 2013 IntelliSense停止适用于ASP.NET MVC5控制器

来自分类Dev

使用viewModel类将数据从视图发布到控制器-ASP.NET MVC5

来自分类Dev

如何从OwinContext中获得Asp.net MVC5控制器操作中的访问令牌

来自分类Dev

ASP.NET MVC5 Elmah错误日志/电子邮件找不到用于路径的控制器

来自分类Dev

在 ASP.NET MVC5 中使用 Ajax 将 Fancytree SelectedNodes 传递给控制器

来自分类Dev

ASP.NET MVC从同一控制器发布到控制器的操作

来自分类Dev

MongoDB分片和配置服务器在同一服务器上?

来自分类Dev

ASP.NET MVC:从另一个控制器调用一个控制器

来自分类Dev

服务器发送事件的ASP.NET MVC控制器操作

来自分类Dev

将字符串从一个视图传递到控制器 ASP.NET MVC5 的问题

来自分类Dev

Node.js-服务来自同一服务器上运行的tomcat的请求

来自分类Dev

ASP.NET MVC5未为请求的URL配置Web服务器,并且未在服务器上启用目录浏览

来自分类Dev

PHP在同一服务器上的不同域(cURL)上创建cookie

来自分类Dev

如何在控制器ASP.NET MVC 5上禁用默认路由

来自分类Dev

如何从ASP.NET MVC控制器上的HTML5 Web表单获取数据?

Related 相关文章

  1. 1

    从同一服务器上的Windows服务发送在ASP.NET MVC应用程序中运行的SignalR广播

  2. 2

    在asp.net的同一服务器上的应用程序根文件夹外部下载文件

  3. 3

    ASP.NET MVC5:对具有会话的控制器进行单元测试

  4. 4

    仅可使用RedirectToAction访问ASP.NET MVC5控制器操作

  5. 5

    ASP.NET MVC5 RoutePrefix控制器名称

  6. 6

    1个控制器处理2个模型,ASP.NET,MVC5

  7. 7

    带有ViewModel的ASP.NET MVC5控制器CRUD(2个模型)

  8. 8

    Asp.net mvc5 hidden for 不将数据传递给控制器

  9. 9

    如何使用 ASP.net MVC 在同一控制器内调用函数任务?

  10. 10

    从Javascript调用ASP.NET MVC 4控制器

  11. 11

    从 JavaScript 正确调用控制器 - ASP.NET MVC

  12. 12

    ASP.NET MVC 调用控制器方法 DevExpress

  13. 13

    ASP.NET MVC 5不调用控制器创建方法

  14. 14

    Javascript错误导致ASP.NET MVC 5调用控制器方法

  15. 15

    Visual Studio 2013 IntelliSense停止适用于ASP.NET MVC5控制器

  16. 16

    使用viewModel类将数据从视图发布到控制器-ASP.NET MVC5

  17. 17

    如何从OwinContext中获得Asp.net MVC5控制器操作中的访问令牌

  18. 18

    ASP.NET MVC5 Elmah错误日志/电子邮件找不到用于路径的控制器

  19. 19

    在 ASP.NET MVC5 中使用 Ajax 将 Fancytree SelectedNodes 传递给控制器

  20. 20

    ASP.NET MVC从同一控制器发布到控制器的操作

  21. 21

    MongoDB分片和配置服务器在同一服务器上?

  22. 22

    ASP.NET MVC:从另一个控制器调用一个控制器

  23. 23

    服务器发送事件的ASP.NET MVC控制器操作

  24. 24

    将字符串从一个视图传递到控制器 ASP.NET MVC5 的问题

  25. 25

    Node.js-服务来自同一服务器上运行的tomcat的请求

  26. 26

    ASP.NET MVC5未为请求的URL配置Web服务器,并且未在服务器上启用目录浏览

  27. 27

    PHP在同一服务器上的不同域(cURL)上创建cookie

  28. 28

    如何在控制器ASP.NET MVC 5上禁用默认路由

  29. 29

    如何从ASP.NET MVC控制器上的HTML5 Web表单获取数据?

热门标签

归档