我已经成为.Net开发人员多年了,并且在将ASP.Net和winform应用程序连接到Web服务方面有相当多的经验。最近我开始使用Navision,特别是2009 R2。
我已经为ASP.Net和Winforms创建了许多应用程序,这些应用程序成功连接到Navision的Web服务,并且最近被要求研究开发Windows Phone 8.1应用程序以替换在tablet pc上运行的现有应用程序那就是所有人都错了......
在阅读了一些试验和错误的案例后,似乎当我打开Visual Studio 2013并创建Windows Phone 8.1 Runtime应用程序时,它无法向Navision Web服务添加Web引用或服务引用
我再次使用Windows Phone 8.1(Silverlight)应用程序启动,至少我可以选择添加服务引用。
我添加了指向我的Web服务的服务引用,但Web服务要求用户设置一组凭据(Windows域用户帐户),并且我没有提示输入这些凭据。好吧,也许他们会在运行时设置......
在Microsoft blog中关注使用Silverlight 3连接到Navision Web服务的帖子之后,我已经完成了大部分代码,但仍然无法输入任何用户凭据。看起来常规Silverlight与Windows Phone开发环境中使用的版本之间存在差异。
以下代码是从我的测试应用程序中获取的方法......
protected void ConnectToNav()
{
try
{
string serviceURL = "http://192.168.0.50:7047/DynamicsNAV/WS/TestCompany/Page/svcUser";
svcUser_PortClient userService = new svcUser_PortClient("svcUser_Port", new EndpointAddress(serviceURL));
userService.ClientCredentials.UserName.UserName = @"Domain\User";
userService.ClientCredentials.UserName.Password = @"Password";
userService.ReadMultipleCompleted += delegate(object sender, ReadMultipleCompletedEventArgs e)
{
display(e.Error.Message);
if (e.Result.Length > 0)
{
display("10 Users:");
for (int i = 0; i < e.Result.Length; i++)
{
display(e.Result[i].ToString());
}
}
};
List<svcUser_Filter> filters = new List<svcUser_Filter>();
userService.ReadMultipleAsync(filters.ToArray(), null, 10);
}
catch (Exception ex)
{
display(ex.Message);
}
}
public void display(string s)
{
this.OutputTextBox.Text += s + Environment.NewLine;
}
这是返回的错误......
远程服务器返回了意外响应:(401)未经授权。在Silverlight中,即使服务发送差异错误代码,也可能会报告404响应代码。
我很乐意听到任何有过这方面工作的人的消息,或者知道对此有什么好的参考以及如何让它发挥作用。
答案 0 :(得分:0)
我建议使用Windows Phone Runtime以便于迁移。你可以做的是使用ASP.NET Web API并使用NAV Web服务,然后从Windows Phone应用程序调用Web API。这对你有用吗?
这是ASP.NET Web API上的一个很好的资源。