我对逃逸功能感到困惑,它在我的.asp网页上工作得很好,但在.Net aspx网页上却不起作用;
这样就宣布了一个变量;
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%
然而,在.Net网页的aspx版本中,我得到了这些错误;
FormatException:输入字符串格式不正确。 Microsoft.VisualBasic.CompilerServices.Conversions.ParseDouble(String值,NumberFormatInfo NumberFormat) +213 Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String值) +90 [InvalidCastException:从字符串"EML电子邮件转发ServiceN“到键入'Integer‘的转换无效。) Microsoft.VisualBasic.CompilerServices.Conversions.ToInteger(String值) +238 ASP.emi2_aspx.__Render__control1(HtmlTextWriter __w,Control parameterContainer)在C:\inetpub\wwwroot\EmsgwebOUT_NETEDITW.aspx:188中 System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter作者,ICollection儿童) +268 ( System.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编写器,ControlAdapter适配器) +100 ( System.Web.UI.Control.RenderControl(HtmlTextWriter作者) +25 System.Web.UI.Page.ProcessRequestMain(布尔型includeStagesBeforeAsyncPoint,布尔型includeStagesAfterAsyncPoint) +1303
我不明白,它以前总是起作用的,而且Escape是一个很简单的函数。
我是否需要做一些其他的事情来为Escape函数准备字符串,还是有一种替代的方法来做到这一点?
发布于 2016-08-16 20:58:58
考虑使用一种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
https://stackoverflow.com/questions/38984050
复制相似问题