Archive

Archive for 25 enero 2014

Instalando Angular.Js en un proyecto asp.net MVC

enero 24, 2014 Deja un comentario

Lo primero que hacemos es crear un proyecto Web:

Angular JS VS.Net

Angularjs2

Ahora para instalar facilmente Angular JS en .net utilizamos el manejador de paquetes de visual studio (Manage Nuget Packages):

Angularjs5

Ahora simplemente buscamos Angular JS y seleccionamos los diferentes paquetes de Angular que vamos a utilizar, a continuación les marco los mas usados:

 

Angularjs3

Angularjs4

 

Dentro del archivo packages.config podemos encontrar las diferentes referencias de los que instalemos y en la carpeta Scripts del proyecto es donde se encuentra los archivos JS para hacer la referencia dentro del proyecto.

 

 

 

Solución error en Sharepoint: The Copy web service method must be called on the same domain that contains the destination url.

enero 16, 2014 Deja un comentario

Este error se soluciona realizando un mapping de la url que se esta implementando para acceder al servicio por ejemplo la URL que generamos cuando salimos por HTTPS:

En un post anterior Explico como configurarlo:

https://mteheran.wordpress.com/2014/01/05/configurando-https-en-sharepoint/

Este Link también paso a paso como realizar el mapping de Urls en sharepoint:

http://sharepointtidbits.blogspot.com/2010/11/once-you-have-your-sharepoint-site-up.html

 

 

Invocar un reporte alojado en el servidor de Reporting Services C#

enero 11, 2014 Deja un comentario

Para invocar un reporte que se encuentre dentro del servidor de reporte solo debemos especificar los datos dentro de nuestro ReportViewer  de la siguiente manera:


ReportViewer1.ProcessingMode = ProcessingMode.Remote;
ReportViewer1.ServerReport.ReportServerUrl = new Uri("http://Servidor//");
ReportViewer1.ServerReport.ReportPath = "Reportes" + "/" + "Reporte.rdl";


//de esta manera podemos obtener los parámetros que va recibir el reporte y pasárselos:
List param = new List();
var listPara = ReportViewer1.ServerReport.GetParameters();
for (int i = 0; i < listPara.Count; i++)
{
param.Add(new ReportParameter(listPara[i].Name, "Valor Prametro",false));
}
ReportViewer1.ServerReport.SetParameters(param);
ReportViewer1.ServerReport.Refresh();

Si el reporte necesita credenciales para conectarse se debe usar de la siguiente manera:

ReportViewer1.ServerReport.ReportServerCredentials = new CustomReportCredentials("User", "Password", "Dom");

y para usar la clase de CustomReportCredentials debemos crearla dentro de la pagina donde este llamando el reporte de la siguiente manera:


public class CustomReportCredentials : Microsoft.Reporting.WebForms.IReportServerCredentials
{


// local variable for network credential.
private string _UserName;
private string _PassWord;
private string _DomainName;
private WindowsIdentity _ImpersonationUser;
public CustomReportCredentials(string UserName, string PassWord, string DomainName)
{
_UserName = UserName;
_PassWord = PassWord;
_DomainName = DomainName;
// _ImpersonationUser = ImpersonationUser;
}
public WindowsIdentity ImpersonationUser
{
get
{
return null; // not use ImpersonationUser
}
}
public ICredentials NetworkCredentials
{
get
{


// use NetworkCredentials
return new NetworkCredential(_UserName, _PassWord, _DomainName);
}
}
public bool GetFormsCredentials(out Cookie authCookie, out string user, out string password, out string authority)
{


// not use FormsCredentials unless you have implements a custom autentication.
authCookie = null;
user = password = authority = null;
return false;
}

}

The full path must be less than 260 characters long; other restrictions apply — Reporting service

Cuando ocurre este error es por que en el campo “Parent” debes colocar un símbolo “/”  para indicar que es una ruta la que se esta implementando:

ReportingService2005SoapClient rs = new ReportingService2005SoapClient();

rs.Open();
rs.CreateReport(null, Nombrereporte, “/Parent”, true, fileContents, null, out arraywar);
rs.Close();

Error:Value cannot be null Parameter name: g — Reporting services

Si estas intentando conectarte a un servidor de reporting services desde una libreria de clases de .net el error se produce por que debes mandar NULL el primer parametro que aparece tipo BatchHeader con esto se sulocuiona el error:


ReportingService2005SoapClient rs = new ReportingService2005SoapClient();
rs.Open();
rs.CreateReport(null, Nombre reporte, "/Parent", true, fileContents, null, out arraywar);
rs.Close();

Accediendo a servicios de Sharepoint por HTTPs

enero 8, 2014 1 comentario

En un post anterior explico como configurar el HTTPs en los sitios de Sharepoint en este les explico el código de como consumirlo:
https://mteheran.wordpress.com/2014/01/05/configurando-https-en-sharepoint/

Primero debes instanciar estas reglas globales en nuestra clase donde estemos ejecutando cualquier servicio ya sea el List.asmx o el Copy.asmx:


ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(ValidateServerCertificate);
ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls;

Luego debemos crear nuestro punto de inicio y fin para el consumir el servicio


BasicHttpBinding binding = new BasicHttpBinding();
binding.MaxBufferSize = 99999999;
binding.MaxReceivedMessageSize = 99999999;
binding.Security.Mode = BasicHttpSecurityMode.Transport;
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
binding.Security.Transport.ProxyCredentialType = HttpProxyCredentialType.None;
binding.Security.Message.AlgorithmSuite = System.ServiceModel.Security.SecurityAlgorithmSuite.Default;
binding.Security.Message.ClientCredentialType = BasicHttpMessageCredentialType.UserName;

Luego configuramos el punto final y realizamos la logica que necesitamos esta es igual para el servicio Lists.asmx para este caso muestro el ejemplo de como se usa con el Copy.asmx y realizo la opción de leer un archivo.

EndpointAddress endpoint = new EndpointAddress({Ursharepointl} + "/_vti_bin/Copy.asmx"));
using (CopySoapClient client = new CopySoapClient(binding, endpoint))
{
client.Endpoint.Address = new System.ServiceModel.EndpointAddress({Ursharepointl} + "/_vti_bin/Copy.asmx");
client.Endpoint.Contract.Name = "ws.App.SharePointDocuments.CopySoap";
client.Endpoint.Binding.Name = "basicHttpBinding";
client.Endpoint.Contract.ConfigurationName = "CopySoap";
NetworkCredential cred = new NetworkCredential(strUser, strPassWord);
client.ClientCredentials.Windows.ClientCredential = cred;
client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;

client.Open();
string destinationUrl = {RutaArchivo} + file;
byte[] bitFile;
FieldInformation[] outFields;
uint ret = client.GetItem(destinationUrl, out outFields, out bitFile);
fileinfo.Content = bitFile;
fileinfo.Errors = "";
fileinfo.P8_Url = destinationUrl;
client.Close();

}

Cualquier duda pueden dejarla en los comentarios.