我创建了一个小的经典asp文件,我使用下面的方法调用asp.net。我工作,但不知何故感觉不对:
Booking.BelongsToSite = file_get_contents("http://localhost:82/test2.asp?functionName=RetBTS¶m=" + User.ID);
protected string file_get_contents(string fileName)
{
string sContents = string.Empty;
if (fileName.ToLower().IndexOf("http:") > -1)
{ // URL
System.Net.WebClient wc = new System.Net.WebClient();
byte[] response = wc.DownloadData(fileName);
sContents = System.Text.Encoding.ASCII.GetString(response);
}
else
{
// Regular Filename
System.IO.StreamReader sr = new System.IO.StreamReader(fileName);
sContents = sr.ReadToEnd();
sr.Close();
}
return sContents;
}
有人可以看到这样做有什么问题吗?
也可以在Classic ASP / VB脚本中执行类似下面的操作。我无法让它调用动态函数名称:
dim functionName, param, result
functionName = request("functionName")
param = request("param")
result = functionName(param)
还有任何想法如何解析参数。假设我将头部中的参数传递给“1,2,3,4”,我该如何将其传递到括号中?
答案 0 :(得分:5)
我认为你正在寻找Eval function in VBScript。您可以使用它以下列方式调用您的方法(演示脚本是wsh中的vbs):
Dim func, param
func = "Hello"
param = "everybody"
MsgBox(Eval(func & "(""" & param & """)"))
Function Hello(name)
Hello = "Hello " & name
End Function
按预期返回“Hello everybody”。
至于你的asp.net代码:我不会判断你的解决方案是否合理,我不知道情况。它绝对可以工作。只有两个评论:
门诺
答案 1 :(得分:3)
尝试使用GetRef
代替Eval
。
dim functionName, param, result
functionName = request("functionName")
param = request("param")
result = GetRef(functionName)(param)