0

我有一个简单的 Web 服务getAD.asmx,用于从活动目录中检索数据。我需要以特定用户的身份执行 WS,并确保只有企业用户才能使用它,所以我使用的是 Windows 身份验证和 ASP.NET 模拟。

我尝试添加一个本地简单的 web 表单来测试我的服务,它似乎可以正常工作

getAD myWS = new getAD();
string testResult = myWS.test(); // testResult execute correctly

现在我试图从另一个 C# 应用程序调用相同的服务,所以我添加了一个 Web 引用并进行了相同的调用,但是我得到了一个 401 错误(未经授权)任何用户。

rbasws01.getAD myWS = new rbasws01.getAD();
string testResult = myWS.test(); // error 401, not authorized

我错过了什么吗?



编辑:这是我的 WebService 的代码

[WebService(Namespace = "http://myUri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class getAD : System.Web.Services.WebService {

    [WebMethod]
    public string test() {
        return "Test positive";
    }
}
4

1 回答 1

1

尝试在您的 IIS 上设置localhost:[some-port-number]绑定并将您的 Web 服务请求指向该绑定。

因此,不要调用http://myUri.org/ws/something,而是http://localhost:1234/ws/something从您的应用程序中调用。

IIS 有时关于自言自语可能会有点好笑——我读这篇文章是为了防止某种攻击,但再也找不到链接了!感谢@LeeHarrison,这称为环回检查。

解决此问题的另一种方法是禁用环回检查,如本知识库文章中所述。

于 2013-11-07T15:41:40.507 回答