我使用了一个简单的Web服务getAD.asmx
来从活动目录中检索数据。我需要将WS作为特定用户执行,并确保只有公司用户可以使用它,因此我使用的是Windows身份验证和ASP.NET模拟。
我尝试添加一个本地简单的网络表单来测试我的服务,它似乎正常工作
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";
}
}
答案 0 :(得分:1)
尝试在IIS上设置localhost:[some-port-number]
绑定,并将您对Web服务的请求指向该内容。
因此,不要拨打http://myUri.org/ws/something
,而是从您的应用程序中调用http://localhost:1234/ws/something
。
IIS有时候谈论自己可能有点滑稽 - 我读到这是为了防止某种攻击,但从来没有能够再次找到链接!感谢@LeeHarrison,这是叫做Loopback Checking。
解决此问题的另一种方法是禁用环回检查,如this KB Article。
中所述