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

How do I connect Windows Phone 8.1 (Silverlight) to Nav 2009 R2 Web Services?

我已经成为 .Net 开发人员多年了,并且在将我的 ASP.Net 和 winform 应用程序连接到 Web 服务方面积累了丰富的经验。最近我开始使用 Navision,特别是 2009 R2。

我已经为 ASP.Net 和成功连接到 Navision 的 Web 服务的 Winforms 创建了许多应用程序,并且最近被要求考虑开发一个 Windows Phone 8.1 应用程序来替换一个在平板电脑上运行的现有应用程序,这就是它全部出错的地方...

看了一些案例,试错了,打开Visual Studio 2013,创建Windows Phone 8.1 Runtime application,好像没办法向 Navision Web 服务添加 Web 引用或服务引用。

我再次开始使用 w Windows Phone 8.1 (Silverlight) 应用程序,至少我可以选择添加服务参考。

我添加了指向我的 Web 服务的服务参考,但该 Web 服务要求用户设置一组凭据(Windows 域用户帐户)并且我从未被提示输入这些.好的,也许它们是在运行时设置的...

Microsoft blog 中的 post 中介绍了如何使用 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;
    } 

这是返回的错误...

The remote Server returned an unexpected response: (401) Unauthorized. In Silverlight, a 404 response code may be reported even when the service sends a difference error code.

我很乐意听取任何人的意见,他们已经使这个工作正常,或者知道对此有任何好的参考以及如何使它工作。

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

ASP.NET Web API 上有很好的资源。