Formanwendung mir Zugriff auf Websservice IFD Problem
-
2012. május 14. 8:15
Hallo an alle hier im Forum,
ich programmiere mir gerade eine Formanwendung mit der man per Webservice auf die Daten im CRM von außen zugreifen kann ohne im CRM eingeloggt zu sein.
Leider funktioniert das ganze nicht so ganz und ich bekomme in VS2010 die Fehlermeldung authentication failed. Ich habe mal folgendes getestet, wenn ich über den LiveID account auf eine MS CRM Demo zugreife z.B. richard.....@gmx.de funktinert das ganze auch gut und eine Verbindung ist möglich!
Da bei uns aber das IFD ( Internet Faceing Depyloment ) angewendet wird, scheint das Programm diese authentifikation nicht zu verarbeiten.
Hat jemande eine Idee oder Erfahrungen im Umgang mit dem Zugriff auf IFD CRM Server ?
Az összes válasz
-
2012. május 14. 8:36
Hallo!
Du musst in der Formanwendung bei IFD über das Formular Benutzername, Passwort und Domain vom Benutzer abfragen und den CRM-Webservice statt mit DefaultCredentials mit NetworkCredentials initialisieren.
Ich hoffe das bringt weiter. Andreas(a)Donaubauer.com www.crmfaq.de
- Válasznak javasolta: Andreas Buchinger 2012. május 14. 9:21
-
2012. május 14. 15:51
Hallo Andreas,
Danke,werde den Ansatz ausprobieren und versuchen zu implementieren.
-
2012. május 23. 12:34
OK die Formanwendung hat bereits Eingabefelder für Benuztername,Pass... die Daten werden auch richtig abgefragt.
Du sagst das ich nicht die DefaultCredentials nehmen soll,sondern die NetworkCredentials? Hast du ein Beispiel vielleicht!
Bin total verzeweifelt nix funktioniert! Dieser Code macht es auch nicht :Hier eine einfache Konsolenanwendung :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel.Description;
using Microsoft.Xrm.Sdk.Client;
using Microsoft.Xrm.Sdk.Discovery;
namespace MS_CRM_Connection_Final
{
class Program
{
static void Main(string[] args)
{
// Connection Data
string crmServer = "test.cmr.de"; // nur Beispiele
string crmUser = "test";
string crmPassword = "test";
string crmDomain = "testing";
// Create Credentials
ClientCredentials credentials = new ClientCredentials();
credentials.Windows.ClientCredential =
new System.Net.NetworkCredential(crmUser, crmPassword, crmDomain);
// Retrieve Organization Data
Uri discoveryServiceUrl = new Uri("https://" + crmServer + "/XRMServices/2011/Discovery.svc");
DiscoveryServiceProxy crmService =
new DiscoveryServiceProxy(discoveryServiceUrl, null, credentials, credentials);
RetrieveOrganizationsRequest request = new RetrieveOrganizationsRequest();
RetrieveOrganizationsResponse response = (RetrieveOrganizationsResponse)crmService.Execute(request);//Hier der Fehler
// Output first Organization
if (response.Details.Count > 0)
{
OrganizationDetail org = response.Details[0];
Console.WriteLine("WebApplication: " + org.Endpoints[EndpointType.WebApplication]);
Console.WriteLine("OrganizationService: " + org.Endpoints[EndpointType.OrganizationService]);
Console.WriteLine("OrganizationDataService: " + org.Endpoints[EndpointType.OrganizationDataService]);
Console.WriteLine("FriendlyName: " + org.FriendlyName);
Console.WriteLine("UniqueName: " + org.UniqueName);
Console.WriteLine("UrlName: " + org.UrlName);
Console.WriteLine("State: " + org.State.ToString());
Console.WriteLine("OrganizationVersion: " + org.OrganizationVersion);
Console.WriteLine("OrganizationId: " + org.OrganizationId.ToString());
}
Console.WriteLine("Press <Enter> to exit.");
Console.ReadLine();
}
}
}Er sagt wieder authentication failed wieso?
-
2012. május 23. 13:53
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.Xrm.Sdk;
using Microsoft.Crm.Sdk;
using Microsoft.Xrm.Sdk.Client;
using System.ServiceModel.Description;
public partial class _Default : System.Web.UI.Page
{
OrganizationServiceProxy orgService;
protected void Page_Load(object sender, EventArgs e)
{
ClientCredentials credentials = new ClientCredentials();
credentials.UserName.UserName = "test@test.com";
credentials.UserName.Password = "youpassword";
ClientCredentials deviceCredentials = new ClientCredentials();
deviceCredentials.UserName.UserName = "11ci6bmxtr43mgy274d5n0jx1c";
deviceCredentials.UserName.Password = "w!L0?(u6n!s~=kAblp5oZnGH";
Uri organizationUri = new Uri("https://testorg.api.crm.dynamics.com/XRMServices/2011/Organization.svc");
Uri homeRealmUri = null;
orgService = new OrganizationServiceProxy(organizationUri, homeRealmUri, credentials, deviceCredentials);
}
protected void Button1_Click(object sender, EventArgs e)
{
Entity lead = new Entity("lead");
lead["subject"] = topic.Text;
lead["firstname"] = firstName.Text;
lead["lastname"] = lastName.Text;
lead["companyname"] = companyName.Text;
orgService.Create(lead);
}
}
Carsten Groth http://carstengroth.wordpress.com Microsoft Dynamics Certified Technology Specialist
- Szerkesztette: Carsten Groth _MSCRM_ 2012. május 23. 13:55
- Válasznak javasolta: Andreas Buchinger 2012. június 5. 13:38
-
2012. május 23. 14:25
class Program
{
static void Main(string[] args)
{
// Anlegen.... der URL hier wird nicht über den DiscoverySerice gegangen,sondern eine direkte Ansprache des Servers wird durchgeführt.
Uri organizationUriIFD = new Uri("https://test.the-company.de/XRMServices/2011/Organization.svc");
// Hier werden die Credentials,also die notwendigen Daten Daten angelegt die zum Einloggen notwenidg sind und gebraucht werden
ClientCredentials credentials = new ClientCredentials();
// Anlegen des UserNamen und weiterer Informationen
credentials.UserName.UserName = "test";
// Angeben des Passworts
credentials.UserName.Password = "test";
// Instanzieren einer ServiceConfiguration
IServiceConfiguration<IOrganizationService> config = ServiceConfigurationFactory.CreateConfiguration<IOrganizationService>(organizationUriIFD);
// Anlegen einer Service Proxy!
using (Microsoft.Xrm.Sdk.Client.OrganizationServiceProxy _serviceProxy = new OrganizationServiceProxy(config, credentials))
{
// This statement is required to enable early-bound type support.
_serviceProxy.ServiceConfiguration.CurrentServiceEndpoint.Behaviors.Add(new ProxyTypesBehavior());
// Anlegen eines neuen Service und anschließender Proxy
IOrganizationService _service = (IOrganizationService)_serviceProxy;
// durchführen eins WhoIamReuest
WhoAmIResponse response = (WhoAmIResponse)_service.Execute(new WhoAmIRequest());
// Ausgeben der Daten
Console.WriteLine(response.UserId.ToString());
Console.ReadLine();
}
// Account retrievedAccount = (Account)_service.Retrieve("account", _accountId, cols);
//Console.Write("Ende");
}
}
}@ Carsten Groth _MSCRM_ : Danke! Werde deinen Code mal testen.Der obere funktioniert auch!
Vielen Dank!
- Válasznak javasolta: Andreas Buchinger 2012. június 5. 13:38