2015-06-29 78 views
0

彈出對話框給出下面的連接代碼:Dynamics CRM中的代碼服務

var serviceUri = "http://machine.co.za/CRM/XRMServices/2011/Organization.svc"; 

    var clientCredentials = new ClientCredentials 
    { 
     Windows = 
     { 
      ClientCredential = new System.Net.NetworkCredential("SOMEUSER", "SOMEPASS", "DOMAIN") 
     } 
    }; 
    var organizationServiceProxy = new OrganizationServiceProxy(new Uri(serviceUri), null, clientCredentials, null); 
    // This line of code pops up a dialog? 
    var user = (WhoAmIResponse)organizationServiceProxy.Execute(new WhoAmIRequest()); 
    if (user.UserId == Guid.Empty) 
     throw new InvalidOperationException(string.Format(@"connection to {0} cannot be established.", crmConnection.ServiceUri)); 
    user.Dump(); 

如果所提供的密碼不正確,該代碼會彈出一個對話框憑據。 由於該服務無權與桌面進行交互,因此該服務暫停,因爲它實際上無法顯示對話框。

我該如何壓制對話框,而不是拋出異常。我使用動態2011年

The dialog that pops up!

+0

這段代碼在哪裏運行? –

+0

我不確定你需要什麼。這是Windows 2008上的服務應用程序,它沒有與桌面交互的權限。它不應該試圖彈出一個對話框。 – Jim

+0

它是否引發異常?也許把你的代碼封裝在try/catch中,看看是否有什麼東西被拋出,你可以處理和適當的記錄。 –

回答

1

我打算把它作爲一個給定的CRM動態OrganizationServiceProxy硬連線至彈出一個對話框。

沒有配置選項或標誌來關閉此行爲。

0

你可能的CrmConnection使用混合起來。它歸結爲:

var conn = new ConnectionStringSettings("CRM", "Url=http://machine.co.za/CRM; Username=SOMEUSER; Password=SOMEPASS; Domain=SOMEDOMAIN") 
var crmConnection = new CrmConnection(conn); 
var crmService = new OrganizationService(crmConnection); 
try 
{ 
    // connection will actually happen here. anything goes wrong, exceptions will be thrown 
    var user = crmService.Execute<WhoAmIResponse>(new WhoAmIRequest()); 
    user.Dump(); 
} 
catch (Exception ex) 
{ 
    // just a proof of concept 
    // ex is of type MessageSecurityException if credentials are invalid 
    throw new InvalidOperationException(string.Format(@"connection to {0} cannot be established.", crmConnection.ServiceUri), ex); 
} 
+0

我正在使用OrganizationServiceProxy,它是Web服務接口。 我同意CrmConnection是多餘的,我已經改變了這個問題來反映這一點。 – Jim

+0

它是多餘的OrganizationServiceProxy,而不是CrmConnection。存在簡單的連接是有原因的 –