我是Web应用程序开发的新手。我已经自己编写了很多脚本(大多数VBscript),并且做了大量的Web开发但是我坚持使用我构建的ASP Classic页面的权限。我在我的Web服务器之外构建和测试的工具非常简单地从循环中的服务器列表中提取SQL服务器,创建/打开ado连接,执行SQL查询,使用get字符串解析结果并确定查询是否顺利完成。出于某种原因,当我将其部署到我的Web服务器时,它尝试使用Web服务器的机器acct'Domain \ ServerName $'来运行该页面。这会导致查询失败,因为计算机帐户没有权限我正在尝试运行此查询的sql服务器。
长话短说,如何强制我的ASP页面使用特定的凭据?我认为它是IIS中的AppPoolPin,但对我来说似乎并不是这样,因为我已将该帐户设置为一个PIN,该PIN对我正在尝试查询的SQL服务器有所帮助,没有更改,我的asp页面仍然使用机器acct'Domain \ ServerName $'。
这是我的代码(出于安全目的而略微剥离)
<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<%
strFilePath = "\\server\path\to\list\"
Set Fso = CreateObject("Scripting.FileSystemObject")
Set InputFile = fso.OpenTextFile(strFilePath & "SQLServerList.txt" , 1)
Do While Not (InputFile.atEndOfStream)
On Error Resume Next
ServName = InputFile.ReadLine
Set myConn = CreateObject("ADODB.Connection")
Set objRecordSet = CreateObject("ADODB.Recordset")
DB_CONNECT_STRING = "Provider=SQLOLEDB.1;Data Source=" & ServName & ";Initial Catalog=Master;Integrated Security=SSPI"
myConn.Open DB_CONNECT_STRING
objRecordSet.Open "select @@VERSION", myConn
Rows = objRecordSet.GetString(,,"</td><td>","</td></tr><tr><td>"," ")
If (InStr(Rows,"Microsoft"))=1 Then %>
<table border="1" width="100%">
<tr>
<td><%Response.Write ServName%></td>
<td><%Response.Write "Online"%></td>
</tr>
</table>
<%Else%>
<table border="1" width="100%">
<tr>
<td><%Response.Write ServName%></td>
<td><%Response.Write "Failed"%></td>
</tr>
</table>
<%
End If
Rows = ""
Set objRecordSet = Nothing
myConn.Close
Set myConn = Nothing
Loop
%>
</body>
</html>
所以我愿意接受任何建议。我想知道如何强制此页面使用凭据,而不显然在我的连接字符串中包含登录名和密码。我绝对不能那样做。
提前感谢您的帮助。对不起,很长的帖子。在我发布之前,我确实环顾了一会儿试图解决这个问题。
答案 0 :(得分:0)
创建新用户帐户:
在应用程序池中,高级设置:
在IIS 7.5网站下:
设置&#34;修改&#34;以下文件夹的[app pool用户标识]权限: