IIS5 > IIS6 Aspx pages with MSAccess dbs no longer working

M

Mark B

Our webhost (www.usbusinessweb.net) had a W2K IIS5 server crash after a
scheduled hard-boot occurred during a ms-security patch install overnight.
They couldn't get the server working again so they transferred our site
www.orbisoft.com to a new W2003 IIS6 server they set up.

That was a week ago.

Since that transfer, all of our ASPX pages that use Access2000 databases
have stopped working.

Our main one is our "buy" page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
which means potential customers can't purchase there.

I have shown the error below which essentially says "Cannot update. Database
or object is read-only."

After numerous assurances from our webhost that they have set anonymous user
write access for both the /fpdb folder and the individual databases we still
get the same error. They say it is our fault in that there is something in
our code that isn't right. They say the have another user where their aspx
pages with MSAccess are working. I said "but all aspx pages were working
fine on IIS5...."

"Line 211: rs.addnew" below is the where the error is highlighted.

The actual relevant code snip-it is as follows with the runtime error listed
below that. You also are welcome to test the page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
with a junk order too - I won't hold you to it:



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<%@Page aspcompat=true Language = VB Debug="true"%>
<%@Import Namespace="aspNetEmail"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@Import Namespace="aspNetMX"%>
<%@Import Namespace="System.Globalization"%>

<script language="VB" runat="server">

Dim strFirstName as String
Dim strLastName as String
Dim strExisting as String
Dim strNumberUsers as String
Dim strCompany as String
Dim strTitle as String
Dim strEmailAddress as String
Dim strAddress as String
Dim strCity as String
Dim strState as String
Dim strZip as String
Dim strCountry as String
Dim strTelephone as String
Dim strIndustry as String
Dim strOtherIndustry as String
Dim strWHSpecific as String
Dim strComment as String
Dim strPromoCode as String
Dim strProductName as String
Dim dblQuantity as Double
Dim dblProductPrice as Double
Dim dblExtension as Double
Dim dblPromotionalCodeSavings as Double
Dim dblTotalUSD as Double
Public Function strProper(strRaw as String) As String
Dim currentTextInfo
currentTextInfo = CultureInfo.CurrentCulture.TextInfo
strProper = currentTextInfo.ToTitleCase(strRaw)
End Function

Function bolStoreEntries()
'Store entries temporarily for populating after validation fail
'**************************************************************
strFirstName = Request("FirstName")
strLastName = Request("LastName")
strExisting = "No"
strNumberUsers = Request("NumberUsers")
strCompany = Request("Company")
strTitle = Request("Title")
strEmailAddress = Request("EmailAddress")
strAddress = Request("Address")
strCity = Request("City")
strState = Request("State")
strZip = Request("Zip")
strCountry = Request("Country")
strTelephone = Request("Telephone")
strIndustry = Request("Industry")
strOtherIndustry = Request("OtherIndustry")
strWHSpecific = Request("WhereHeard")
strComment = Request("Comment")
End Function


</script>
<%
Dim bolErr as Boolean
bolStoreEntries
fCalculatePrices
If Request("OrderNow") <> "" Then

'Save to database
'****************
Dim strHTML as String
Dim strlf as String
Dim strS1 as String
Dim strS2 as String
Dim strS3 as String
Dim strErr as String
Dim bSuccess as Boolean
Dim sPath as String
Dim conn
Dim rs
Dim lngInvoiceNumber as Long
Dim lngInvoiceReference as Long

sPath = "D:\inetpub\www\orbisoft\fpdb\dbOnlineOrders.mdb"

conn = Server.CreateObject("ADODB.Connection")
conn.open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security
Info=TRUE;" & "Data Source=" & sPath, "Admin", "")
rs = server.createobject("adodb.recordset")
rs.open ("tblOrders", conn, 2, 2)
rs.addnew

if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))

etc...







And here's the error it now gives (falling over on the 211 rs.addnew line):

Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 209: rs.open ("tblOrders", conn, 2, 2)
Line 210:
Line 211: rs.addnew
Line 212:
Line 213: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))


Source File:
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x Line: 211

Stack Trace:

[COMException (0x80040e09): Cannot update. Database or object is
read-only.]

Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object
o, Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack, Boolean IgnoreReturn) +798
Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o,
Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack) +23
ASP.order_details_aspx.__Render__control1(HtmlTextWriter __output,
Control parameterContainer) in
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x:211
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +27
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Page.ProcessRequestMain() +1926


Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET
Version:1.1.4322.2300


Any ideas very much appreciated ....

Mark
 
K

Ken Tucker [MVP]

Hi,

Try enclosing rs.addnew is a try catch block to get a better
error message. Sql server is much better for the web than access. MSDE is
a free version of sql server.

Try
rs.addnew
catch ex as exception
Response.write(ex.tostring)
end try

http://www.microsoft.com/downloads/...d1-a0bc-479f-bafa-e4b278eb9147&displaylang=en

Ken
---------------------
Our webhost (www.usbusinessweb.net) had a W2K IIS5 server crash after a
scheduled hard-boot occurred during a ms-security patch install overnight.
They couldn't get the server working again so they transferred our site
www.orbisoft.com to a new W2003 IIS6 server they set up.

That was a week ago.

Since that transfer, all of our ASPX pages that use Access2000 databases
have stopped working.

Our main one is our "buy" page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
which means potential customers can't purchase there.

I have shown the error below which essentially says "Cannot update. Database
or object is read-only."

After numerous assurances from our webhost that they have set anonymous user
write access for both the /fpdb folder and the individual databases we still
get the same error. They say it is our fault in that there is something in
our code that isn't right. They say the have another user where their aspx
pages with MSAccess are working. I said "but all aspx pages were working
fine on IIS5...."

"Line 211: rs.addnew" below is the where the error is highlighted.

The actual relevant code snip-it is as follows with the runtime error listed
below that. You also are welcome to test the page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
with a junk order too - I won't hold you to it:



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<%@Page aspcompat=true Language = VB Debug="true"%>
<%@Import Namespace="aspNetEmail"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@Import Namespace="aspNetMX"%>
<%@Import Namespace="System.Globalization"%>

<script language="VB" runat="server">

Dim strFirstName as String
Dim strLastName as String
Dim strExisting as String
Dim strNumberUsers as String
Dim strCompany as String
Dim strTitle as String
Dim strEmailAddress as String
Dim strAddress as String
Dim strCity as String
Dim strState as String
Dim strZip as String
Dim strCountry as String
Dim strTelephone as String
Dim strIndustry as String
Dim strOtherIndustry as String
Dim strWHSpecific as String
Dim strComment as String
Dim strPromoCode as String
Dim strProductName as String
Dim dblQuantity as Double
Dim dblProductPrice as Double
Dim dblExtension as Double
Dim dblPromotionalCodeSavings as Double
Dim dblTotalUSD as Double
Public Function strProper(strRaw as String) As String
Dim currentTextInfo
currentTextInfo = CultureInfo.CurrentCulture.TextInfo
strProper = currentTextInfo.ToTitleCase(strRaw)
End Function

Function bolStoreEntries()
'Store entries temporarily for populating after validation fail
'**************************************************************
strFirstName = Request("FirstName")
strLastName = Request("LastName")
strExisting = "No"
strNumberUsers = Request("NumberUsers")
strCompany = Request("Company")
strTitle = Request("Title")
strEmailAddress = Request("EmailAddress")
strAddress = Request("Address")
strCity = Request("City")
strState = Request("State")
strZip = Request("Zip")
strCountry = Request("Country")
strTelephone = Request("Telephone")
strIndustry = Request("Industry")
strOtherIndustry = Request("OtherIndustry")
strWHSpecific = Request("WhereHeard")
strComment = Request("Comment")
End Function


</script>
<%
Dim bolErr as Boolean
bolStoreEntries
fCalculatePrices
If Request("OrderNow") <> "" Then

'Save to database
'****************
Dim strHTML as String
Dim strlf as String
Dim strS1 as String
Dim strS2 as String
Dim strS3 as String
Dim strErr as String
Dim bSuccess as Boolean
Dim sPath as String
Dim conn
Dim rs
Dim lngInvoiceNumber as Long
Dim lngInvoiceReference as Long

sPath = "D:\inetpub\www\orbisoft\fpdb\dbOnlineOrders.mdb"

conn = Server.CreateObject("ADODB.Connection")
conn.open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security
Info=TRUE;" & "Data Source=" & sPath, "Admin", "")
rs = server.createobject("adodb.recordset")
rs.open ("tblOrders", conn, 2, 2)
rs.addnew

if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))

etc...







And here's the error it now gives (falling over on the 211 rs.addnew line):

Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 209: rs.open ("tblOrders", conn, 2, 2)
Line 210:
Line 211: rs.addnew
Line 212:
Line 213: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))


Source File:
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x Line: 211

Stack Trace:

[COMException (0x80040e09): Cannot update. Database or object is
read-only.]

Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object
o, Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack, Boolean IgnoreReturn) +798
Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o,
Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack) +23
ASP.order_details_aspx.__Render__control1(HtmlTextWriter __output,
Control parameterContainer) in
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x:211
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +27
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Page.ProcessRequestMain() +1926


Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET
Version:1.1.4322.2300


Any ideas very much appreciated ....

Mark
 
M

Mark B

I did that and it didn't catch the rs.addnew error -- it just breezed
through it and then gave the same error but for the next statement:

Line 222: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))



Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 221:
Line 222: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
Line 223: if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))
Line 224: if Request("Company") <> "" then rs("Organization")=
Request("Company")












Ken Tucker said:
Hi,

Try enclosing rs.addnew is a try catch block to get a better
error message. Sql server is much better for the web than access. MSDE is
a free version of sql server.

Try
rs.addnew
catch ex as exception
Response.write(ex.tostring)
end try

http://www.microsoft.com/downloads/...d1-a0bc-479f-bafa-e4b278eb9147&displaylang=en

Ken
---------------------
Our webhost (www.usbusinessweb.net) had a W2K IIS5 server crash after a
scheduled hard-boot occurred during a ms-security patch install overnight.
They couldn't get the server working again so they transferred our site
www.orbisoft.com to a new W2003 IIS6 server they set up.

That was a week ago.

Since that transfer, all of our ASPX pages that use Access2000 databases
have stopped working.

Our main one is our "buy" page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
which means potential customers can't purchase there.

I have shown the error below which essentially says "Cannot update. Database
or object is read-only."

After numerous assurances from our webhost that they have set anonymous user
write access for both the /fpdb folder and the individual databases we still
get the same error. They say it is our fault in that there is something in
our code that isn't right. They say the have another user where their aspx
pages with MSAccess are working. I said "but all aspx pages were working
fine on IIS5...."

"Line 211: rs.addnew" below is the where the error is highlighted.

The actual relevant code snip-it is as follows with the runtime error listed
below that. You also are welcome to test the page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
with a junk order too - I won't hold you to it:



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<%@Page aspcompat=true Language = VB Debug="true"%>
<%@Import Namespace="aspNetEmail"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@Import Namespace="aspNetMX"%>
<%@Import Namespace="System.Globalization"%>

<script language="VB" runat="server">

Dim strFirstName as String
Dim strLastName as String
Dim strExisting as String
Dim strNumberUsers as String
Dim strCompany as String
Dim strTitle as String
Dim strEmailAddress as String
Dim strAddress as String
Dim strCity as String
Dim strState as String
Dim strZip as String
Dim strCountry as String
Dim strTelephone as String
Dim strIndustry as String
Dim strOtherIndustry as String
Dim strWHSpecific as String
Dim strComment as String
Dim strPromoCode as String
Dim strProductName as String
Dim dblQuantity as Double
Dim dblProductPrice as Double
Dim dblExtension as Double
Dim dblPromotionalCodeSavings as Double
Dim dblTotalUSD as Double
Public Function strProper(strRaw as String) As String
Dim currentTextInfo
currentTextInfo = CultureInfo.CurrentCulture.TextInfo
strProper = currentTextInfo.ToTitleCase(strRaw)
End Function

Function bolStoreEntries()
'Store entries temporarily for populating after validation fail
'**************************************************************
strFirstName = Request("FirstName")
strLastName = Request("LastName")
strExisting = "No"
strNumberUsers = Request("NumberUsers")
strCompany = Request("Company")
strTitle = Request("Title")
strEmailAddress = Request("EmailAddress")
strAddress = Request("Address")
strCity = Request("City")
strState = Request("State")
strZip = Request("Zip")
strCountry = Request("Country")
strTelephone = Request("Telephone")
strIndustry = Request("Industry")
strOtherIndustry = Request("OtherIndustry")
strWHSpecific = Request("WhereHeard")
strComment = Request("Comment")
End Function


</script>
<%
Dim bolErr as Boolean
bolStoreEntries
fCalculatePrices
If Request("OrderNow") <> "" Then

'Save to database
'****************
Dim strHTML as String
Dim strlf as String
Dim strS1 as String
Dim strS2 as String
Dim strS3 as String
Dim strErr as String
Dim bSuccess as Boolean
Dim sPath as String
Dim conn
Dim rs
Dim lngInvoiceNumber as Long
Dim lngInvoiceReference as Long

sPath = "D:\inetpub\www\orbisoft\fpdb\dbOnlineOrders.mdb"

conn = Server.CreateObject("ADODB.Connection")
conn.open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security
Info=TRUE;" & "Data Source=" & sPath, "Admin", "")
rs = server.createobject("adodb.recordset")
rs.open ("tblOrders", conn, 2, 2)
rs.addnew

if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))

etc...







And here's the error it now gives (falling over on the 211 rs.addnew line):

Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 209: rs.open ("tblOrders", conn, 2, 2)
Line 210:
Line 211: rs.addnew
Line 212:
Line 213: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))


Source File:
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x Line: 211

Stack Trace:

[COMException (0x80040e09): Cannot update. Database or object is
read-only.]

Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object
o, Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack, Boolean IgnoreReturn) +798
Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o,
Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack) +23
ASP.order_details_aspx.__Render__control1(HtmlTextWriter __output,
Control parameterContainer) in
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x:211
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +27
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Page.ProcessRequestMain() +1926


Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET
Version:1.1.4322.2300


Any ideas very much appreciated ....

Mark
 
P

Patrick.O.Ige

MarkB i have had also such experience using MS ACCESS!!
If possible try using SQLServer as Ken adviced..
I would hint you with some fixes...
1) Have you given the MS ACCESS files the right permission make sure the you
give the ASPNET acct permission
Or even if possible the the FOLDERS where the MDB files exist.(Give it
write, read etc..
2)Whenever you open and MDB file is sometimes locks it and creates a LDF
file if i can remember
3)With Win2003 i think you have to give the FOLDER or your MDB files the
Network service acct the right permission look ath this blog for that
http://forums.asp.net/869604/ShowPost.aspx
Hope that helps
Patrick






Mark B said:
Our webhost (www.usbusinessweb.net) had a W2K IIS5 server crash after a
scheduled hard-boot occurred during a ms-security patch install overnight.
They couldn't get the server working again so they transferred our site
www.orbisoft.com to a new W2003 IIS6 server they set up.

That was a week ago.

Since that transfer, all of our ASPX pages that use Access2000 databases
have stopped working.

Our main one is our "buy" page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
which means potential customers can't purchase there.

I have shown the error below which essentially says "Cannot update. Database
or object is read-only."

After numerous assurances from our webhost that they have set anonymous user
write access for both the /fpdb folder and the individual databases we still
get the same error. They say it is our fault in that there is something in
our code that isn't right. They say the have another user where their aspx
pages with MSAccess are working. I said "but all aspx pages were working
fine on IIS5...."

"Line 211: rs.addnew" below is the where the error is highlighted.

The actual relevant code snip-it is as follows with the runtime error listed
below that. You also are welcome to test the page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
with a junk order too - I won't hold you to it:



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<%@Page aspcompat=true Language = VB Debug="true"%>
<%@Import Namespace="aspNetEmail"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@Import Namespace="aspNetMX"%>
<%@Import Namespace="System.Globalization"%>

<script language="VB" runat="server">

Dim strFirstName as String
Dim strLastName as String
Dim strExisting as String
Dim strNumberUsers as String
Dim strCompany as String
Dim strTitle as String
Dim strEmailAddress as String
Dim strAddress as String
Dim strCity as String
Dim strState as String
Dim strZip as String
Dim strCountry as String
Dim strTelephone as String
Dim strIndustry as String
Dim strOtherIndustry as String
Dim strWHSpecific as String
Dim strComment as String
Dim strPromoCode as String
Dim strProductName as String
Dim dblQuantity as Double
Dim dblProductPrice as Double
Dim dblExtension as Double
Dim dblPromotionalCodeSavings as Double
Dim dblTotalUSD as Double
Public Function strProper(strRaw as String) As String
Dim currentTextInfo
currentTextInfo = CultureInfo.CurrentCulture.TextInfo
strProper = currentTextInfo.ToTitleCase(strRaw)
End Function

Function bolStoreEntries()
'Store entries temporarily for populating after validation fail
'**************************************************************
strFirstName = Request("FirstName")
strLastName = Request("LastName")
strExisting = "No"
strNumberUsers = Request("NumberUsers")
strCompany = Request("Company")
strTitle = Request("Title")
strEmailAddress = Request("EmailAddress")
strAddress = Request("Address")
strCity = Request("City")
strState = Request("State")
strZip = Request("Zip")
strCountry = Request("Country")
strTelephone = Request("Telephone")
strIndustry = Request("Industry")
strOtherIndustry = Request("OtherIndustry")
strWHSpecific = Request("WhereHeard")
strComment = Request("Comment")
End Function


</script>
<%
Dim bolErr as Boolean
bolStoreEntries
fCalculatePrices
If Request("OrderNow") <> "" Then

'Save to database
'****************
Dim strHTML as String
Dim strlf as String
Dim strS1 as String
Dim strS2 as String
Dim strS3 as String
Dim strErr as String
Dim bSuccess as Boolean
Dim sPath as String
Dim conn
Dim rs
Dim lngInvoiceNumber as Long
Dim lngInvoiceReference as Long

sPath = "D:\inetpub\www\orbisoft\fpdb\dbOnlineOrders.mdb"

conn = Server.CreateObject("ADODB.Connection")
conn.open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security
Info=TRUE;" & "Data Source=" & sPath, "Admin", "")
rs = server.createobject("adodb.recordset")
rs.open ("tblOrders", conn, 2, 2)
rs.addnew

if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))

etc...







And here's the error it now gives (falling over on the 211 rs.addnew line):

Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 209: rs.open ("tblOrders", conn, 2, 2)
Line 210:
Line 211: rs.addnew
Line 212:
Line 213: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))


Source File:
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x Line: 211

Stack Trace:

[COMException (0x80040e09): Cannot update. Database or object is
read-only.]

Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object
o, Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack, Boolean IgnoreReturn) +798
Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o,
Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack) +23
ASP.order_details_aspx.__Render__control1(HtmlTextWriter __output,
Control parameterContainer) in
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x:211
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +27
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Page.ProcessRequestMain() +1926


Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET
Version:1.1.4322.2300


Any ideas very much appreciated ....

Mark
 
K

Ken Tucker [MVP]

Hi,

Any way you could update you code to use ado.net instead of ado?

Ken
----------------
I did that and it didn't catch the rs.addnew error -- it just breezed
through it and then gave the same error but for the next statement:

Line 222: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))



Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 221:
Line 222: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
Line 223: if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))
Line 224: if Request("Company") <> "" then rs("Organization")=
Request("Company")












Ken Tucker said:
Hi,

Try enclosing rs.addnew is a try catch block to get a better
error message. Sql server is much better for the web than access. MSDE is
a free version of sql server.

Try
rs.addnew
catch ex as exception
Response.write(ex.tostring)
end try

http://www.microsoft.com/downloads/...d1-a0bc-479f-bafa-e4b278eb9147&displaylang=en

Ken
---------------------
Our webhost (www.usbusinessweb.net) had a W2K IIS5 server crash after a
scheduled hard-boot occurred during a ms-security patch install overnight.
They couldn't get the server working again so they transferred our site
www.orbisoft.com to a new W2003 IIS6 server they set up.

That was a week ago.

Since that transfer, all of our ASPX pages that use Access2000 databases
have stopped working.

Our main one is our "buy" page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
which means potential customers can't purchase there.

I have shown the error below which essentially says "Cannot update. Database
or object is read-only."

After numerous assurances from our webhost that they have set anonymous user
write access for both the /fpdb folder and the individual databases we still
get the same error. They say it is our fault in that there is something in
our code that isn't right. They say the have another user where their aspx
pages with MSAccess are working. I said "but all aspx pages were working
fine on IIS5...."

"Line 211: rs.addnew" below is the where the error is highlighted.

The actual relevant code snip-it is as follows with the runtime error listed
below that. You also are welcome to test the page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
with a junk order too - I won't hold you to it:



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<%@Page aspcompat=true Language = VB Debug="true"%>
<%@Import Namespace="aspNetEmail"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@Import Namespace="aspNetMX"%>
<%@Import Namespace="System.Globalization"%>

<script language="VB" runat="server">

Dim strFirstName as String
Dim strLastName as String
Dim strExisting as String
Dim strNumberUsers as String
Dim strCompany as String
Dim strTitle as String
Dim strEmailAddress as String
Dim strAddress as String
Dim strCity as String
Dim strState as String
Dim strZip as String
Dim strCountry as String
Dim strTelephone as String
Dim strIndustry as String
Dim strOtherIndustry as String
Dim strWHSpecific as String
Dim strComment as String
Dim strPromoCode as String
Dim strProductName as String
Dim dblQuantity as Double
Dim dblProductPrice as Double
Dim dblExtension as Double
Dim dblPromotionalCodeSavings as Double
Dim dblTotalUSD as Double
Public Function strProper(strRaw as String) As String
Dim currentTextInfo
currentTextInfo = CultureInfo.CurrentCulture.TextInfo
strProper = currentTextInfo.ToTitleCase(strRaw)
End Function

Function bolStoreEntries()
'Store entries temporarily for populating after validation fail
'**************************************************************
strFirstName = Request("FirstName")
strLastName = Request("LastName")
strExisting = "No"
strNumberUsers = Request("NumberUsers")
strCompany = Request("Company")
strTitle = Request("Title")
strEmailAddress = Request("EmailAddress")
strAddress = Request("Address")
strCity = Request("City")
strState = Request("State")
strZip = Request("Zip")
strCountry = Request("Country")
strTelephone = Request("Telephone")
strIndustry = Request("Industry")
strOtherIndustry = Request("OtherIndustry")
strWHSpecific = Request("WhereHeard")
strComment = Request("Comment")
End Function


</script>
<%
Dim bolErr as Boolean
bolStoreEntries
fCalculatePrices
If Request("OrderNow") <> "" Then

'Save to database
'****************
Dim strHTML as String
Dim strlf as String
Dim strS1 as String
Dim strS2 as String
Dim strS3 as String
Dim strErr as String
Dim bSuccess as Boolean
Dim sPath as String
Dim conn
Dim rs
Dim lngInvoiceNumber as Long
Dim lngInvoiceReference as Long

sPath = "D:\inetpub\www\orbisoft\fpdb\dbOnlineOrders.mdb"

conn = Server.CreateObject("ADODB.Connection")
conn.open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security
Info=TRUE;" & "Data Source=" & sPath, "Admin", "")
rs = server.createobject("adodb.recordset")
rs.open ("tblOrders", conn, 2, 2)
rs.addnew

if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))

etc...







And here's the error it now gives (falling over on the 211 rs.addnew line):

Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 209: rs.open ("tblOrders", conn, 2, 2)
Line 210:
Line 211: rs.addnew
Line 212:
Line 213: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))


Source File:
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x Line: 211

Stack Trace:

[COMException (0x80040e09): Cannot update. Database or object is
read-only.]

Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object
o, Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack, Boolean IgnoreReturn) +798
Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o,
Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack) +23
ASP.order_details_aspx.__Render__control1(HtmlTextWriter __output,
Control parameterContainer) in
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x:211
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +27
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Page.ProcessRequestMain() +1926


Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET
Version:1.1.4322.2300


Any ideas very much appreciated ....

Mark
 
M

Mark B

I have created an ultra-simple database and aspx test page at:
http://www.orbisoft.com/products/taskmanager/2005/purchase/test.aspx
to illustrate that it is still a Windows 2003 Server permissions issue:

The aspx page HTML is simply:

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<%@Page aspcompat=true Language = VB Debug="true"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@Import Namespace="System.Globalization"%>

<%
Dim sPath as String, conn, rs
sPath = "D:\inetpub\www\orbisoft\fpdb\db12.mdb"
conn = Server.CreateObject("ADODB.Connection")
conn.open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & sPath)
rs = server.createobject("adodb.recordset")
rs.open ("Table1", conn, 2, 2)
rs.addnew
rs.update
%>


It still gives the same error message "Cannot update. Database or object is
read-only."

Ken - Do you know what the ADO.NET for the above sample would be?



Ken Tucker said:
Hi,

Any way you could update you code to use ado.net instead of ado?

Ken
----------------
I did that and it didn't catch the rs.addnew error -- it just breezed
through it and then gave the same error but for the next statement:

Line 222: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))



Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 221:
Line 222: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
Line 223: if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))
Line 224: if Request("Company") <> "" then rs("Organization")=
Request("Company")












Ken Tucker said:
Hi,

Try enclosing rs.addnew is a try catch block to get a better
error message. Sql server is much better for the web than access. MSDE is
a free version of sql server.

Try
rs.addnew
catch ex as exception
Response.write(ex.tostring)
end try
http://www.microsoft.com/downloads/...d1-a0bc-479f-bafa-e4b278eb9147&displaylang=en
Ken
---------------------
Our webhost (www.usbusinessweb.net) had a W2K IIS5 server crash after a
scheduled hard-boot occurred during a ms-security patch install overnight.
They couldn't get the server working again so they transferred our site
www.orbisoft.com to a new W2003 IIS6 server they set up.

That was a week ago.

Since that transfer, all of our ASPX pages that use Access2000 databases
have stopped working.

Our main one is our "buy" page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
which means potential customers can't purchase there.

I have shown the error below which essentially says "Cannot update. Database
or object is read-only."

After numerous assurances from our webhost that they have set anonymous user
write access for both the /fpdb folder and the individual databases we still
get the same error. They say it is our fault in that there is something in
our code that isn't right. They say the have another user where their aspx
pages with MSAccess are working. I said "but all aspx pages were working
fine on IIS5...."

"Line 211: rs.addnew" below is the where the error is highlighted.

The actual relevant code snip-it is as follows with the runtime error listed
below that. You also are welcome to test the page at
http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
with a junk order too - I won't hold you to it:



<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">

<%@Page aspcompat=true Language = VB Debug="true"%>
<%@Import Namespace="aspNetEmail"%>
<%@Import Namespace="System.Data"%>
<%@Import Namespace="System.Data.OleDb"%>
<%@Import Namespace="aspNetMX"%>
<%@Import Namespace="System.Globalization"%>

<script language="VB" runat="server">

Dim strFirstName as String
Dim strLastName as String
Dim strExisting as String
Dim strNumberUsers as String
Dim strCompany as String
Dim strTitle as String
Dim strEmailAddress as String
Dim strAddress as String
Dim strCity as String
Dim strState as String
Dim strZip as String
Dim strCountry as String
Dim strTelephone as String
Dim strIndustry as String
Dim strOtherIndustry as String
Dim strWHSpecific as String
Dim strComment as String
Dim strPromoCode as String
Dim strProductName as String
Dim dblQuantity as Double
Dim dblProductPrice as Double
Dim dblExtension as Double
Dim dblPromotionalCodeSavings as Double
Dim dblTotalUSD as Double
Public Function strProper(strRaw as String) As String
Dim currentTextInfo
currentTextInfo = CultureInfo.CurrentCulture.TextInfo
strProper = currentTextInfo.ToTitleCase(strRaw)
End Function

Function bolStoreEntries()
'Store entries temporarily for populating after validation fail
'**************************************************************
strFirstName = Request("FirstName")
strLastName = Request("LastName")
strExisting = "No"
strNumberUsers = Request("NumberUsers")
strCompany = Request("Company")
strTitle = Request("Title")
strEmailAddress = Request("EmailAddress")
strAddress = Request("Address")
strCity = Request("City")
strState = Request("State")
strZip = Request("Zip")
strCountry = Request("Country")
strTelephone = Request("Telephone")
strIndustry = Request("Industry")
strOtherIndustry = Request("OtherIndustry")
strWHSpecific = Request("WhereHeard")
strComment = Request("Comment")
End Function


</script>
<%
Dim bolErr as Boolean
bolStoreEntries
fCalculatePrices
If Request("OrderNow") <> "" Then

'Save to database
'****************
Dim strHTML as String
Dim strlf as String
Dim strS1 as String
Dim strS2 as String
Dim strS3 as String
Dim strErr as String
Dim bSuccess as Boolean
Dim sPath as String
Dim conn
Dim rs
Dim lngInvoiceNumber as Long
Dim lngInvoiceReference as Long

sPath = "D:\inetpub\www\orbisoft\fpdb\dbOnlineOrders.mdb"

conn = Server.CreateObject("ADODB.Connection")
conn.open ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Persist Security
Info=TRUE;" & "Data Source=" & sPath, "Admin", "")
rs = server.createobject("adodb.recordset")
rs.open ("tblOrders", conn, 2, 2)
rs.addnew

if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))
if Request("LastName") <> "" then rs("LastName")=
strProper(Request("LastName"))

etc...







And here's the error it now gives (falling over on the 211 rs.addnew line):

Server Error in '/' Application.

Cannot update. Database or object is read-only.

Description: An unhandled exception occurred during the execution of the
current web request. Please review the stack trace for more information
about the error and where it originated in the code.

Exception Details: System.Runtime.InteropServices.COMException: Cannot
update. Database or object is read-only.

Source Error:

Line 209: rs.open ("tblOrders", conn, 2, 2)
Line 210:
Line 211: rs.addnew
Line 212:
Line 213: if Request("FirstName") <> "" then rs("FirstName")=
strProper(Request("FirstName"))


Source File:
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x Line: 211

Stack Trace:

[COMException (0x80040e09): Cannot update. Database or object is
read-only.]

Microsoft.VisualBasic.CompilerServices.LateBinding.InternalLateCall(Object
o, Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack, Boolean IgnoreReturn) +798
Microsoft.VisualBasic.CompilerServices.LateBinding.LateCall(Object o,
Type objType, String name, Object[] args, String[] paramnames, Boolean[]
CopyBack) +23
ASP.order_details_aspx.__Render__control1(HtmlTextWriter __output,
Control parameterContainer) in
D:\Inetpub\www\orbisoft\products\taskmanager\2005\purchase\order-details.asp
x:211
System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +27
System.Web.UI.Control.Render(HtmlTextWriter writer) +7
System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +243
System.Web.UI.Page.ProcessRequestMain() +1926


Version Information: Microsoft .NET Framework Version:1.1.4322.2300; ASP.NET
Version:1.1.4322.2300


Any ideas very much appreciated ....

Mark
 
P

Paul Clement

¤ Our webhost (www.usbusinessweb.net) had a W2K IIS5 server crash after a
¤ scheduled hard-boot occurred during a ms-security patch install overnight.
¤ They couldn't get the server working again so they transferred our site
¤ www.orbisoft.com to a new W2003 IIS6 server they set up.
¤
¤ That was a week ago.
¤
¤ Since that transfer, all of our ASPX pages that use Access2000 databases
¤ have stopped working.
¤
¤ Our main one is our "buy" page at
¤ http://www.orbisoft.com/products/taskmanager/2005/purchase/select-version.aspx
¤ which means potential customers can't purchase there.
¤
¤ I have shown the error below which essentially says "Cannot update. Database
¤ or object is read-only."
¤

What you are experiencing is related to NTFS permissions. If your application is not using
impersonation then the NetworkService account (the default account under which the thread of your
application executes under IIS 6.0 and Windows 2003) must have Full permissions to the folder where
the Access database is located.


Paul
~~~~
Microsoft MVP (Visual Basic)
 
A

Allen St.Clair

It's nothing about IIS.
In Win2003, there is a change.
You must give rights to edit data of the directory, where you put the ACCESS
mdb file in, to the user ASPnet (sorry, I forget the certain name, only be
similar)
 
M

Mark B

Yes. From our webhost:

"Had to redo your permissions in NTFS for /fpdb directories to allow write
permission for anonymous internet user - and at
the same time I have verified it is indeed NETWORK SERVICES user that also
needs write permission on your database directories in addition to anonymous
internet user, (which wasn't the case in IIS5)"
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,754
Messages
2,569,521
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top