2016-08-16 18 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

相關問題