我得到了一个托管在 ASP.NET 网站中的 WCF 服务。该服务仅在有人登录该网站时可用。WCF 服务使用 webHttp 绑定。现在我需要从其他 M/c 的控制台应用程序中使用服务。我有用于登录网站的身份验证凭据(用户名/密码)。无论如何我可以使用凭据从控制台应用程序使用服务吗?作为先决条件,我无法在服务端更改任何内容。
问问题
375 次
1 回答
0
这种技术对我有用,因为页面中使用表单身份验证的代码正在调用我们的 WCF 服务来进行实际的登录处理,即我们OperationContract
已经做了一个。
string address = "http://localhost:4567";
var serviceClient = new SomeService.MyServiceClient(
"BasicHttpBinding_IMyService", address + "/myservice.svc");
// Call the service login method, save off the response's cookie(s)
string cookiesFromLogin = string.Empty;
bool logonSucceeded = false;
using (new OperationContextScope(serviceClient.InnerChannel))
{
logonSucceeded = serviceClient.DoTheLogin("userName", "userPass");
var httpResponse = (HttpResponseMessageProperty)
OperationContext.Current.IncomingMessageProperties[
HttpResponseMessageProperty.Name];
cookiesFromLogin = httpResponse.Headers["Set-Cookie"];
}
// Then later when you need to make other service calls, insert the cookie(s)
// into the request headers
using (new OperationContextScope(serviceClient.InnerChannel))
{
var httpRequest = new HttpRequestMessageProperty();
httpRequest.Headers["Cookie"] = cookiesFromLogin;
OperationContext.Current.OutgoingMessageProperties[
HttpRequestMessageProperty.Name] = httpRequest;
var someResults = serviceClient.CallSomeMethod("param1");
}
于 2013-08-07T01:21:25.820 回答