2

我有 Windows 授权的 OData Web 服务。

connection = new BaseWCFService.ASUTBEntities(new Uri("pathtoservice"));
connection.Credentials = CredentialCache.DefaultCredentials;
string SID = System.Security.Principal.WindowsIdentity.GetCurrent().User.Value;
var finduser = (from o in IS.connection.User
                where o.SID == SID
                select o).ToList();

此代码发出两个请求而不是一个请求。首先,它发送简单的 text/html 请求,得到 401 错误,然后发送带有身份验证的普通 atom 请求:

在此处输入图像描述

如何让他通过身份验证发出一个请求并避免发送 text/html 请求?

4

1 回答 1

1

我只是猜测,但我会说构造函数已经连接到 web 服务。

也许是这样的:

new BaseWCFService.ASUTBEntities(new Uri("pathtoservice"), CredentialCache.DefaultCredentials);

或者

connection = new BaseWCFService.ASUTBEntities();
connection.Credentials = CredentialCache.DefaultCredentials;
connection.Url = new Uri("pathtoservice");

但我再次猜测。但是,由于第一个请求具有未经授权的权限,因此承包商似乎在没有凭据的情况下进行连接。在我重写该函数并在执行基本函数之前先添加凭据之前,有一个类似的自定义函数,它已解决。(在我的情况下,我仍然需要两个请求,因为我想从初始化中获得结果)

于 2012-12-27T13:13:15.447 回答