Bilgi paylaştıkça değerlenir...!

Xslt compile problemi

For security reasons DTD is prohibited in this XML document. To enable DTD processing set the DtdProcessing property on XmlReaderSettings to Parse and pass the settings into XmlReader.Create method.

Eğer XslCompiledTransform nesnesinin transform methodunu cağırırken yukarıdaki  gibi bir hata ile karşılaşırsanız. Sebebi ve çözümü aşağıdaki gibidir.

 

Yukarıdaki hatanın sebebi xslt nizin içinde  <!DOCTYPE xsl:stylesheet []> şeklinde bir style eklemişsiniz ve transformasyonda bunu parse etme ayarini set etmemişsiniz demektir. Bu yüzden yukarıdaki hatayı alıyorsunuz. Çözümü için aşağıdaki kod parçasını kodunuza eklemeniz yeterli olacaktır.

XmlReaderSettings settings = new XmlReaderSettings();

settings.DtdProcessing = DtdProcessing.Parse;

 

Örnek:

XmlReaderSettings settings = new XmlReaderSettings();
settings.DtdProcessing = DtdProcessing.Parse;

XslCompiledTransform transform = new XslCompiledTransform();
StringReader xsltStringReader = new StringReader(inputXsltString);
XmlReader xsltXmlReader = XmlReader.Create(xsltStringReader, settings);
transform.Load(xsltXmlReader);
StringReader inputXmlStringReader = new StringReader(inputXmlString);
XmlReader inputXmlReader = XmlReader.Create(inputXmlStringReader);
StringWriter results = new StringWriter();
transform.Transform(inputXmlReader, null, results);

Using SSO in C# class

If you want to use SSO in your custome C# class, you must do this step:

 

1- Add reference “Microsoft.EnterpriseSingleSignOn.Interop.dll”. You can find this dll in “C:\Program Files\Common Files\Enterprise Single Sign-On\Microsoft.EnterpriseSingleSignOn.Interop.dll” or you can use “C:\Program Files\Common Files\Enterprise Single Sign-On\Microsoft.BizTalk.Interop.SSOClient.dll”

2- Use this code block;

public static string GetCredentials(string appName, string propName)
        {
            try
            {
                string value = String.Empty;
                string _username;
                string[] _password;
                ISSOLookup1 ESSOTest = new ISSOLookup1();
                _password = ESSOTest.GetCredentials(appName, SSOFlag.SSO_FLAG_NONE, out _username);
                if (propName == “Password”)
                    value = _password[0];
                else if (propName == “Username”)
                    value = _username;
                return value;
            }
            catch (Exception e)
            {
                System.Diagnostics.Trace.WriteLine(e.Message);
                throw;
            }
        }

3- You can call

GetCredentials(“Your sso Application Name”, “Username”);  for get username;

GetCredentials(“Your sso Application Name”, “Password”);  for get password;