如何使数据服务发送一个凭证而不是两个?

时间:2012-12-27 12:56:41

标签: c# wcf-data-services

我有带授权的OData网络服务。

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错误,然后发送带有身份验证的普通原子请求:

enter image description here

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

1 个答案:

答案 0 :(得分:1)

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

可能是这样的:

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

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

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