2010-02-22 50 views
0

运行不能调用Web服务,我得到的错误如下:部署ASP.NET网站时服务器,但是当我试图通过调用子虚拟目录中的Web服务来运行ASP.NET网站可以在localhost

“的请求,HTTP状态401失败:未经授权”

这是我写的代码:下面

Dim ws As Odyssey.SupportServices.SupportServices 
ws = New Odyssey.SupportServices.SupportServices 
ws.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials 

我的虚拟目录结构如下所示:

CSACCsupp - 父母:父母可以在没有任何问题的情况下调用webservice。
Odyssey - Sub:Sub无法调用webservice,如上面的错误所示。

我认为问题出在IIS安全。因此,我通过IIS安全性并比较了父代和子代;它们是相同的。

我真的不知道下一步该怎么做,因为我已经尝试了很多方法来设置IIS的安全性,但我仍然处于黑暗中。

您能否就这个问题提出建议?

+1

您应该发布您的web.config,尤其是身份验证/授权设置。 – Jacob 2010-02-22 04:45:24

回答

0

应用程序是否运行在同一个AppPool中?如果没有,他们每个人都在哪个帐户下运行? web.config文件是否相同?也许你在一个模拟而不是另一个模拟?

+0

它运行在同一个应用程序池中。它使用系统ID,我也不知道。但问题是,当我尝试从服务器调用webservice时,它没有将系统ID发送到web服务。而当我在localhost(我的电脑)中调用网站并在服务器中调用webservice时,它将我的id发送到webservice。你能否帮助解释为什么它是不同的。 谢谢。 – Belovely 2010-02-24 06:30:53

+0

你还没有发布web.config。如果应用程序将您的ID发送到Web服务,这意味着它使用模拟,或者appPool使用您的凭据运行。可以在服务器上以相同的方式进行设置,也可以在web.config中启用模拟,或者将默认ASP.NET标识的权限添加到Web服务服务器。 – Bryan 2010-02-24 21:23:17

0

检出您的文件ntfs权限,有时复制文件窗口会保留文件的原始权限而不是新文件的权限。

所以很可能你的文件例如web.config可能没有必要的权限。

+0

我检查了权限,它是相同的设置。 这是非常weired,我可以从父文件夹中调用webservice。 另一方面,我无法从子文件夹调用webservice。 我已经为Parent和Sub文件夹设置Web虚拟目录以使用相同的应用程序池。 请你帮忙解决这个问题。 在此先感谢。:) – Belovely 2010-02-24 06:41:38