2016-08-16 35 views
-1

我对Escape功能感到困惑,它在我的.asp网页中工作得很好,但在.aspx aspx网页中不起作用;可以在.Net ..中使用VBScript Escape()函数吗?

因此变量被声明;

Dim sProtocols As String 

该内容被加载到sProtocols变量中(通过读取文件);

[EML Email forwarding] 
ServiceName=EML FORWARD 
ProtocolKey=SMTP_ANY_DESTN 
PortBaudRate= 
PortDataBits= 
PortParity= 
PortStopBits= 
PortFlowControl=OFF 
DialNumber= 
ServicePrompt= 
ServiceLogoff= 
CarrierPrefix= 
AccessKey= 
MaxPages=999 
MaxLength=250 
MaxAttempts=1 
X25NUA= 
X25Prompt=your.domain.com 

然后在sProtocols的内容上调用Escape函数;

sTemp = Escape(sProtocols) 

这里是完美形成的输出,可以嵌入到网页中;

%5BEML%20Email%20forwarding%5D%0D%0AServiceName%3DEML%20FORWARD%0D%0AProtocolKey%3DSMTP_ANY_DESTN%0D%0APortBaudRate%3D%0D%0APortDataBits%3D%0D%0APortParity%3D%0D%0APortStopBits %3D%0D%0APortFlowControl%3DOFF%0D%0ADialNumber%3D%0D%0AServicePrompt%3D%0D%0AServiceLogoff%3D%0D%0ACarrierPrefix%3D%0D%0AAccessKey%3D%0D%0AMaxPages%3D999%0D%0AMaxLength%3D250 %0D%0AMaxAttempts%3D1%0D%0AX25NUA%3D%0D%0AX25Prompt%3Dyour.domain.com%0D 0A%%

然而,在网页的净ASPX版本我得到这些错误;

[出现FormatException:输入字符串的不正确的格式。]
Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(字符串值,的NumberFormatInfo的NumberFormat)213
Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger (字符串值)90

[InvalidCastException的:从字符串转换 “[EML电子邮件转发] ServiceN” 键入 '整数' 是无效]
Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(串值) +238
ASP.emi2_aspx .__ Render__control1(HtmlTextWriter的__w,控制parameterContainer)在C:\的Inetpub \ wwwroot的\ EmsgwebOUT_NETEDITW.aspx:188
System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter的作家,ICollection的孩子)268
系统。 Web.UI.Control.RenderChildren(HtmlTextWriter的作家)+13
System.Web.UI.Page.Render(HtmlTextWriter的作家)+29
System.Web.UI.Control.RenderControlInternal(HtmlTextWriter的作家的ControlAdapter适配器)+66
System.Web.UI.Control.RenderControl(HtmlTextWriter writer,ControlAdapter adapter)+100
System.Web.UI.Control.RenderControl(HtmlTextWriter writer)+25
System.Web.UI.Page.ProcessRequestMain(布尔includeStagesBeforeAsyncPoint,布尔includeStagesAfterAsyncPoint)1303

我不明白,这之前一直工作,逃生就是这样一个简单的功能使用。

我是否需要做其他事情来为Escape函数准备字符串,或者是否有其他方法来执行此操作?

+1

您必须查找[HttpServerUtility.UrlEncode方法](https://msdn.microsoft.com/en-us/library/zttxte6w(v = vs.110).aspx)... VBScript!= VB.Net – Filburt

+0

感谢Filburt,但不完全是由于UrlEncode未将空间编码为%20撇号到%27并保留+字符 – rangi

回答

0

考虑使用C#的替代品之一:

string s = @"[EML Email forwarding] 
ServiceName=EML FORWARD 
ProtocolKey=SMTP_ANY_DESTN 
PortBaudRate= 
PortDataBits= 
PortParity= 
PortStopBits= 
PortFlowControl=OFF 
DialNumber= 
ServicePrompt= 
ServiceLogoff= 
CarrierPrefix= 
AccessKey= 
MaxPages=999 
MaxLength=250 - 
MaxAttempts=1 
X25NUA= 
X25Prompt=your.domain.com"; 

string s2 = System.Uri.EscapeDataString(s); 

Console.WriteLine(s2); 

%5BEML%20Email%20forwarding%5D%0D%0AServiceName%3DEML%20FORWARD%0D%0AProtocolKey%3DSMTP_ANY_DESTN%0D%0APortBaudRate%3D% 0D%0APortDataBits%3D%0D%0APortParity%3D%0D%0APortStopBits%3D%0D%0APortFlowControl%3DOFF%0D%0ADialNumber%3D%0D%0AServicePrompt%3D%0D%0AServiceLogoff%3D%0D%0ACarrierPrefix%3D%0D% 0AAccessKey%3D%0D%0AMaxPages%3D999%0D%0AMaxLength%3D250%0D%0AMaxAttempts%3D1%0D%0AX25NUA%3D%0D%0AX25Prompt%3Dyour.domain.com

+0

谢谢!我被C#推迟了,但它似乎也可以在VBScript中调用这个函数(确认用户“dtb”); sTemp = Uri.EscapeDataString(sProtocols) – rangi

相关问题