我有一个带有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
我希望这里有人可以看到我失踪的东西。提前谢谢。