0

Dynamics CRM に接続して定期的なデータ読み込みを実行する Windows サービスがあります。

このエラーが発生しています:
認証エンドポイントのユーザー名が、構成された Secure Token Service で見つかりませんでした!

サービスは以前は機能していましたが、コードが変更されており、CRM サーバーまたは Windows サービスを実行しているサーバーで何かが変更された可能性があります。

アプリケーションは、Windows サービスとして失敗しているのと同じマシンからコンソール アプリケーションとして起動された場合に実行されます。

アプリケーションは、私の開発マシンでサービスおよびコンソール アプリケーションとして実行されます。

public class CRMSync
{
    /* There are more fields and methods that are not pertinent */
    /* Called by CRMAUX.OnStart when it is time to start the service */
    public async void Start()
    {
        this.Test();
        var freq = 0;
        ConfigurationManager.RefreshSection("appSettings");
        var parse = int.TryParse(ConfigurationManager.AppSettings["Frequency"], out freq);
        await System.Threading.Tasks.Task.Delay((parse) ? freq * 1000 * 60 : 15000 * 60); // 15 minutes default or user defined
        Start();
    }
    /* Do something to test */
    private void Test()
    {
        Connect(); // Connect to CRM and instantiate service and linq (the service context)
        Log(linq.sbuys_scriptsSet.FirstOrDefault().sbuys_Number); // Write to the Event Viewer
        service.Dispose(); // Dispose the OrganizationServiceProxy
    }
}

編集

これが接続方法です

    /* Tries to connect to CRM and return false if failure - credentials arguments */
    private bool Connect(string username, string password, string uri)
    {
        try
        {
            var cred = new ClientCredentials();
            cred.UserName.UserName = username;
            cred.UserName.Password = password;
            service = new OrganizationServiceProxy(new Uri(uri), null, cred, null);
            service.EnableProxyTypes(); // this has to happen to allow LINQ early bound queries
            linq = new Context(service);
            var who = new Microsoft.Crm.Sdk.Messages.WhoAmIRequest(); // used to test the connection
            var whoResponse = (Microsoft.Crm.Sdk.Messages.WhoAmIResponse)service.Execute(who); // this fails if not connected       
        }
        catch (Exception e)
        {
            Log(e.Message);
            return false;
        }
        return true;
    }
4

0 に答える 0