如何将Windows Phone 8.1(Silverlight)连接到Nav 2009 R2 Web服务?

时间:2015-05-07 09:28:23

标签: web service windows-phone-8.1 navision

我已经成为.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响应代码。

我很乐意听到任何有过这方面工作的人的消息,或者知道对此有什么好的参考以及如何让它发挥作用。

1 个答案:

答案 0 :(得分:0)

我建议使用Windows Phone Runtime以便于迁移。你可以做的是使用ASP.NET Web API并使用NAV Web服务,然后从Windows Phone应用程序调用Web API。这对你有用吗?

这是ASP.NET Web API上的一个很好的资源。