我在Visual Studio 2008中创建了一个Windows CE 5.0应用程序。此应用程序引用了一项服务,该服务是在Visual Studio 2010中创建并在IIS 6中托管的WCF服务。由于该服务是从Windows CE项目引用的,因此使用“添加Web引用”对话框引用旧版Web服务。
该服务配置为使用传输安全性,它需要Windows凭据:
<system.serviceModel>
<services>
<service name="ServiceTests.TestService">
<endpoint address="" binding="basicHttpBinding" contract="ServiceTests.ITestService" bindingConfiguration="basicConfig"></endpoint>
</service>
</services>
<bindings>
<basicHttpBinding>
<binding name="basicConfig">
<security mode="TransportWithMessageCredential">
<transport clientCredentialType="Windows"></transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
此服务很容易从普通的.net 4.0应用程序中使用,如下所示:
var client = new TestServiceClient();
client.ClientCredentials.UserName.UserName = "FBradley";
client.ClientCredentials.UserName.Password = "jgb.2013!";
System.Console.WriteLine(client.GetData(1));
System.Console.ReadLine();
但是,从Windows CE项目中,ClientCredentials属性不可用,只有Credentials属性。我试图将NetworkCredential类型传递给它,但它失败了:
using (var client = new TestService())
{
client.Credentials = new NetworkCredential("usename", "password", "domain");
var response = client.GetData(1, true);
MessageBox.Show(response);
}
我是否从服务配置文件中遗漏了Windows CE设备(显然不是域成员)需要进行身份验证的内容?如何配置此Windows CE(非域)设备或服务,以便客户端可以使用该服务?我错过了什么?