2013-01-21 98 views
2

我正在嘗試編寫一個程序,該程序只需連接到GP WebService並調用GetCustomerList()方法即可從Great Plains獲取客戶。我在下面概述的代碼是我能夠在文檔中找到的重複項,但是,當我運行它時,我收到了一個SoapException。我不知道我是否缺少憑證(例如用戶名和密碼),或者我是否正確調用了這些憑證。我相信我在Dynamics Security Console中正確設置了安全設置,但我不是100%確定的,或者是否有其他需要配置的內容。任何幫助將不勝感激。嘗試訪問GP WebServices時出現SOAP異常

public IList<string> GetCustomerNames() 
{ 
    //Added a ServiceReference to the actual WebService which appears to be working 
    var service = new DynamicsGPClient(); 
    var context = new Context(); 
    var customerKey = new CustomerKey(); 
    var companyKey = new CompanyKey(); 

    //Trying to load the test data 
    companyKey.Id = (-1); 

    context.OrganizationKey = (OrganizationKey)companyKey; 

    //Trying to load the test data 
    customerKey.Id = "AARONFIT0001"; 

    var customers = service.GetCustomerList(new CustomerCriteria(), context); 

    return customers.Select(x => x.Name).ToList(); 
} 
+0

我使用Dynamics GP的2010 – bkorzynski

回答

1

聽起來像一個安全問題......你得到一個特定的錯誤消息...這可能是有益的......

也發現了這個...

這聽起來我就像您需要在您的 Web服務上使用Windows App Pool Identity一樣。現在,您將IIS安全設置設置爲「匿名」,因此 客戶端在調用您的方法時不需要傳遞憑據。

您需要將其關閉並將您的應用程序池作爲Windows帳戶運行。一旦 你有這個工作,你可以選擇,如果你只想添加一個應用程序 池身份到Web服務的安全性,並且所有操作 完成作爲該帳戶(安全性較差),或者在您的包裝,您可以使用 HTTP用戶的上下文標識,並將其設置爲您實際使用的GP WebService調用的 的「WorkOnBehalfOf」屬性。

你必須給應用程序 池標識在Web服務安全 控制檯「WorkOnBehalfOf」權限,然後你要調用WebService的爲準用戶。這會保持安全模型完好無損,並且您正在授權調用封裝的Web服務的用戶實際上有權調用原始GP Webservice方法。 (這是企業門戶如何將請求轉發到web服務 )

https://groups.google.com/forum/?fromgroups=#!topic/microsoft.public.greatplains/W7gAo_zXit8

+0

非常感謝你,你的建議的工作。 – bkorzynski

相關問題