迁移到新的64位服务器的ASP页似乎无法访问mdb格式的用户数据库

时间:2015-05-26 18:01:01

标签: asp.net asp-classic server

我有一个带有IIS6的32位Windows 2003服务器上的两个站点(一个经典ASP,一个ASPX)。我正在使用IIS7.5将这些站点迁移到64位Windows 2008 R2服务器。我已经完成了在新服务器上设置IIS并将所有文件从旧服务器复制到新服务器的所有必要步骤,包括两个mdb格式的Access数据库。这些是通过DSN连接访问的,这些连接已在新服务器上重新创建。我已经确认IIS也设置为以32位模式运行。 ASPX网站似乎正在运行,但我遇到了旧网站的问题,我们公司的经销商用它来提交保修索赔(它创建于2007年)。

当用户访问此站点时(通过我们外部托管的网页上的安全门户),通过链接访问ASP站点会提示他们输入用户名和密码。这些由AuthentiX 6.2针对存储在前面提到的一个Access数据库中的表进行检查,如果用户在数据库中,则会将它们带到站点的第一页。此处显示用户名(显示为" Dealer Acct")以及两个框,提示他们输入电子邮件地址和序列号(根据第二个数据库检查)。但是,在新服务器上运行测试事务时,用户信息将保留为空白,并且无法手动输入此信息(我相信设计)。当我尝试进入下一页时,出现以下错误:

"您尚未正确填写其中一个必填字段。请更正红色项目。"

红色项目当然是用户名/"经销商帐户"。我确实注意到了几条10016错误消息,让我相信可能存在基于Google搜索该事件ID而遗漏的身份验证问题(下面事件的文本详情)     >

  

日志名称:系统

> Source:        Microsoft-Windows-DistributedCOM Date:         
> 5/26/2015 11:05:33 AM Event ID:      10016 Task Category: None Level: 
> Error Keywords:      Classic User:          IIS APPPOOL\DefaultAppPool
> Computer:      SR204A.xxxx.COM Description: The application-specific
> permission settings do not grant Local Activation permission for the
> COM Server application with CLSID 
> {0C0A3666-30C9-11D0-8F20-00805F2CD064}  and APPID 
> {9209B1A6-964A-11D0-9372-00A0C9034910}  to the user IIS
> APPPOOL\DefaultAppPool SID
> (S-1-5-82-3006700770-424185619-1745488364-794895919-4004696415) from
> address LocalHost (Using LRPC). This security permission can be
> modified using the Component Services administrative tool. Event Xml:
> <Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event"> 
> <System>
>     <Provider Name="Microsoft-Windows-DistributedCOM" Guid="{1B562E86-    B7AA-4131-BADC-B6F3A001407E}" EventSourceName="DCOM"
> />
>     <EventID Qualifiers="49152">10016</EventID>
>     <Version>0</Version>
>     <Level>2</Level>
>     <Task>0</Task>
>     <Opcode>0</Opcode>
>     <Keywords>0x80000000000000</Keywords>
>     <TimeCreated SystemTime="2015-05-26T15:05:33.000000000Z" />
>     <EventRecordID>9833</EventRecordID>
>     <Correlation />
>     <Execution ProcessID="0" ThreadID="0" />
>     <Channel>System</Channel>
>     <Computer>SR204A.xxxx.COM</Computer>
>     <Security UserID="S-1-5-82-3006700770-424185619-1745488364-794895919-    4004696415"
> />   </System>   <EventData>
>     <Data Name="param1">application-specific</Data>
>     <Data Name="param2">Local</Data>
>     <Data Name="param3">Activation</Data>
>     <Data Name="param4">{0C0A3666-30C9-11D0-8F20-00805F2CD064}</Data>
>     <Data Name="param5">{9209B1A6-964A-11D0-9372-00A0C9034910}</Data>
>     <Data Name="param6">IIS APPPOOL</Data>
>     <Data Name="param7">DefaultAppPool</Data>
>     <Data Name="param8">S-1-5-82-3006700770-424185619-1745488364-    794895919-4004696415</Data>
>     <Data Name="param9">LocalHost (Using LRPC)</Data>   </EventData>         >></Event>

我还怀疑其中一个DSN链接无法正常工作,但我不确定。这是该页面的代码。

' Find the Current User
usingAuthentiXStandard = true
if (usingAuthentiXStandard) then
Set AuthX = Server.CreateObject("AUTHXOCX.AuthXOCXCtrl.1") 
else
Set AuthX = Server.CreateObject("AUTHXISP.AuthXOCXCtrl.1") 
protectedDomain = Request.ServerVariables("LOCAL_ADDR")
AuthX.SetVirtualDomain protectedDomain, Request.ServerVariables("SCRIPT_NAME")
AuthX.SetVirtualDomainPassword("")
end if
currentUser =      left(UCASE(AuthX.CurrentUserName(Request.ServerVariables("LOCAL_ADDR"),     Request.ServerVariables("SCRIPT_NAME"), Request.ServerVariables("HTTP_AUTHORIZATION"))),6) 

Dim errormessage
strError = ""

if Request.Form("flag") = "1" Then

Dim rsSerialNumber, connection
Dim rowcount, SQL, sConnString
Set Connection=Server.CreateObject("ADODB.Connection")
Set rsSerialNumber=Server.CreateObject("ADODB.Recordset")

sConnString="DSN=warrantyreg"
Connection.Open(sConnString)

SQL = "SELECT UDFREF_28, [DATE PURCH] FROM [MAIN WARRANTY REGISTRATION DATA] WHERE UDFREF_28='"& Request.Form("txtSerialNumber")&"'"
rsSerialNumber.Open SQL,connection,3,3

rowcount=rsSerialNumber.recordcount
'response.write "The number of records is " & rowcount
if (rowcount > 0) then
    if trim(rsSerialNumber.Fields("DATE PURCH").Value) <> "" then
        strNextPage = 1
    else
        if Request("regflag") = 1 then
            strNextPage = 1
        else
            if Request("regflag") = 2 then
                strNextPage = 2
            end if
        end if
    strRegError = 1 
    end if
else
    strError = "<span class=""error"">Serial Number not found.</span>"
    strNextPage = 0
end if
' Close our recordset and connection and dispose of the objects
rsSerialNumber.Close
Set rsSerialNumber = Nothing

Connection.Close
'Set Connection = Nothing
'Check Dealer Number

Set rsDealerAccount=Server.CreateObject("ADODB.Recordset") 
sConnString="DSN=XXXX5;UID=xx;PWD=xxxx"
Connection.Open(sConnString)



'Check Dealer Account
'SQL = "SELECT CUSTID_23 FROM [Customer Master] WHERE CUSTID_23='"& Request("txtDealerAccount")&"'"
SQL = "SELECT CUSTID_23 FROM " & chr(34) & "Customer_Master" & chr(34) & "WHERE CUSTID_23='"& Request("txtDealerAccount")&"'"
rsDealerAccount.Open SQL,connection,3,3

rowcount=rsDealerAccount.recordcount
if (rowcount = 0) then
    strNextPage = 0
    strError2 ="<span class=""error"">Dealer Account not found.</span>"
end if

if strNextPage = 1 then
    Server.Transfer("step2.asp")
    Response.end()
end if

if strNextPage = 2 then
    Server.Transfer("regrequired.asp")
    Response.end()
end if

' Close our recordset and connection and dispose of the objects
rsDealerAccount.Close
Set rsDealerAccount = Nothing

Connection.Close
Set Connection = Nothing

我希望这里有人可以看到我失踪的东西。提前谢谢。

0 个答案:

没有答案