Classic ASP and Signature Pad ADODB.Stream error '800a0bb9' - asp-classic

Using code for saving signature to file from this post
get error on line
bStream.Write( nodeB64.NodeTypedValue )
ADODB.Stream error '800a0bb9'
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
Using local server win 7 ultimate and classic asp.
Tried many different solutions but no luck.

Fix it. forgot to add the right jquery js and css head of my page.

Related

Button with correct signature not found in type

I keep getting this "correct signature not found in type error" when adding a button. I've tried every variation of the signature that I can think of to no avail. I think the issue may have something to do with the other errors. Do the errors come from using Drive to store the files? view Code behind Errors

classic asp chr() function issue

I was trying to implement RC4 encription in ASP but I found a strange behaviour on chr() function.
but the issue is not related to RC4 script but to something I've not been able to solve.
Not to mention all the test I've done, I could riproduce the issue in a very simple form:
I simply wrote
<%=chr(146)%>
in 2 pages, let say L2.asp and L3.asp
page L2.asp shows ' thus html ’
page L3.asp shows �
clearly both pages are on the same server (Windows Server 2012 R2) but
it seems page L3.asp does not recognize Extended ASCII Table.
I try adding <% Response.Charset="ISO-8859-1"%> on top.. and many other solution but nothing changes..
although the script is very simple (but tested also longer script with rc4 routine), if I copy the content of L2.asp in L3.asp or viceversa, the behaviour of the page remains unchanged, thus, L2.asp contiunes to show ' while L3 shows �, and changing name of the page will not change behaviour.
do have some idea what can create such strange behaviour?
Thanks a lot for any hint
It's not about Chr function. � is UTF8-BOM which is optional for UTF-8 files. First try to save ASP files in UTF-8 without BOM. You can use an advanced editor like Notepad++. Follow the steps: Open "file.asp" > Encoding > Convert to UTF-8 and then File > Save.
Response.Charset simply appends the name of the character set to the Content-Type response header and does nothing on server-side.
Instead you must specify Response.CodePage = 1252.

What causes "ASP 0248" error?

I get this really bizarre error:
0x80004005 - Object ObjectContext: 006~ASP 0248~Script isn't transacted. This ASP file must be transacted in order to use the ObjectContext object.
In some cases. I have old ASP pages that call several libraries, one of which does this:
IF blnHasError THEN
ObjectContext.SetAbort
ELSE
ObjectContext.SetComplete
END IF
Which is where the error occurs. But given the obscure error message, I can't figure out what ASP wants or expects.
The calling page must be transacted, meaning that in its header it must declare this:
<%# Transaction=Required %>
More documentation here.

Int32 parse not finding object in asp

I have the follow asp file:
<H3>test file</H3>
<%
s = "1"
a = Int32.Parse(s)
%>
and I get the following error:
test file
Microsoft VBScript runtime error '800a01a8'
Object required: ''
/ignore/testInt32.asp, line 4
I suspect I am missing an include, but I can not find any example that has an include.
Are you sure you are using classic asp. I looked this up because I though
Int32.Parse()
was a bit strange. As far as I can tell that is a ASP.NET only function. for classic asp you should use
CInt()
Edit: Just wanted to update my answer a bit. While the above line would give you no issue in your example, in order to make sure the code exactly matches what your original code would do, you should instead use
CLng()
CLng will overflow after ~2 million the same as Int32. CInt on the other hand CInt will overflow after ~30k. Either way for classic asp you should use one of those two.
Why did you get an Object Required Error?
The issue is your mixing asp.net objects with asp-classic which out of the box Classic ASP (by default vbscript) doesn't know about.
The fact a line number is included should lead to the cause of the problem fairly quickly.
Microsoft VBScript runtime error '800a01a8'
Object required: ''
/ignore/testInt32.asp, line 4
on line 4 which will be;
a = Int32.Parse(s)
An Object is required error occurs because Int32 is not a valid "Object Reference" as far as VBScript is concerned. There is no built-in Objects called Int32 and there is no instantiation of an Int32 Object Reference using code like;
Set Int32 = Server.CreateObject("TheObjectsProgID")
Solution
If you want to parse an Long data type in VBScript as #KHeaney has suggested you should be using
a = CLng(s)
VBScript is Typeless so Check Your Variables
Be aware that if the value of s is not a valid numeric value you conversion will fail and you will receive a
Microsoft VBScript runtime error '0x800a000d'
Type mismatch: 'CLng'
There are various ways to get around this including using Val() which will return non numeric conversions as 0 (this can be dangerous). Another approach is to check the value beforehand using something like;
If IsNumeric(s) Then a = CLng(s) Else a = 0
You don't have to set a = 0 this can be any assignment a = "" is also possible, the fact is checking the variable like this gives you greater control over the outcome.
Useful Links
CLng() Function
VBScript Data Types

When am I able to access the ASPError object?

I've begun using ASPUnit to unit test my classic ASP code. This is all good and I'm happy. The only problem is with the error messages it displays when a test generates a runtime error. For example, if I've not defined a variable somewhere in my function I get the error:
Microsoft VBScript runtime error (500): Variable is undefined
What would be more useful is if it could tell me which file/line the error occurred on. I know that I can get this information from the ASPError object which is returned by the Server.GetLastError() and elsewhere in my project I have a custom 500 error page which makes use of this method to automatically report crashes to Fogbugz. However when I try to access Server.GetLastError anywhere else the information returned is blank. For example, the following code will output zero rather than the expected 4.
<%
Option Explicit
On Error Resume Next
aVariable = "hello"
Dim errObj : Set errObj = Server.GetLastError()
Response.Write errObj.Line
%>
Is this the correct way to access ASPError or is it only possible on custom error pages? Is there a better way to get error messages reported within ASPUnit?
To the best of my knowledge the ASPError object does not get populated until your current page finished processing. Its meant to only be used on the 500 error page only. So theory is when you get an error if you've set up your 500 page then IIS will do an internal redirect to that page to allow you to at least record the error. Then and only then is the ASPError object available. I've had crazy ideas of using a xmlhttprequest to try to grab the page but thats just not the way it works.
In short there is not much you can do to get that error message details that you want.
Using JScript server side you can use try catch's which give you access to a exception object but even thats not much good to you, no line numbers or anything. Rubbish.

Resources