/ / [NullReferenceException: referencia de objeto no establecida en una instancia de un objeto.] - asp.net, sharepoint, nullreferenceexception

[NullReferenceException: referencia de objeto no establecida en una instancia de un objeto.] - asp.net, sharepoint, nullreferenceexception

[NullReferenceException: Object reference not set to an instance of an object.]
Wictor.Office365.MsOnlineClaimsHelper.getCookieContainer() +128
Wictor.Office365.MsOnlineClaimsHelper.clientContext_ExecutingWebRequest(Object sender, WebRequestEventArgs e) +33
Microsoft.SharePoint.Client.ClientContext.EnsureFormDigest() +382
Microsoft.SharePoint.Client.ClientContext.ExecuteQuery() +16
Webapplicatie.Default.Page_Load(Object sender, EventArgs e) +334
System.Web.UI.Control.LoadRecursive() +70
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3177

es el mensaje que recibo cuando despliegue mi sitio web en línea.

A nivel local, todo funciona bien, incluso cuando copio todos los archivos del proyecto en otra computadora, todo se ve bien.

Sin embargo, cuando publico el sitio en el servidor IIS, se muestra el error como se muestra arriba.

¿Hay alguna configuración que pueda faltar? Dudo que esto sea un problema de codificación ya que todo funciona perfectamente en el localhost

código en Default.aspx.cs:

  MsOnlineClaimsHelper claimsHelper = new MsOnlineClaimsHelper(sharepointsiteUrl, username, password);
using (ClientContext context = new ClientContext(sharepointsiteUrl))
{
context.ExecutingWebRequest += claimsHelper.clientContext_ExecutingWebRequest;

context.Load(context.Web);

context.ExecuteQuery();

Lebel.Text = "Succesfully logged in as " + username + " on " + context.Web.Title;
}"

Código adicional para MsOnlineClaimsHelper

// Method used to add cookies to CSOM
public void clientContext_ExecutingWebRequest(object sender, WebRequestEventArgs e) {
e.WebRequestExecutor.WebRequest.CookieContainer = getCookieContainer();
//e.WebRequestExecutor.WebRequest.UserAgent = userAgent;
}

// Creates or loads cached cookie container
CookieContainer getCookieContainer() {
if (_cachedCookieContainer == null || DateTime.Now > _expires) {

// Get the SAML tokens from SPO STS (via MSO STS) using fed auth passive approach
MsoCookies cookies = getSamlToken();

if (!string.IsNullOrEmpty(cookies.FedAuth)) {

// Create cookie collection with the SAML token
_expires = cookies.Expires;
CookieContainer cc = new CookieContainer();

// Set the FedAuth cookie
Cookie samlAuth = new Cookie("FedAuth", cookies.FedAuth) {
Expires = cookies.Expires,
Path = "/",
Secure = cookies.Host.Scheme == "https",
HttpOnly = true,
Domain = cookies.Host.Host
};
cc.Add(samlAuth);


if (_useRtfa) {
// Set the rtFA (sign-out) cookie, added march 2011
Cookie rtFa = new Cookie("rtFA", cookies.rtFa) {
Expires = cookies.Expires,
Path = "/",
Secure = cookies.Host.Scheme == "https",
HttpOnly = true,
Domain = cookies.Host.Host
};
cc.Add(rtFa);
}
_cachedCookieContainer = cc;
return cc;
}
return null;
}
return _cachedCookieContainer;
}

public CookieContainer CookieContainer {
get {
if (_cachedCookieContainer == null || DateTime.Now > _expires) {
return getCookieContainer();
}
return _cachedCookieContainer;
}
}

Respuestas

2 para la respuesta № 1

Microsoft.EntityModel.dll no se agregó al servidor en la publicación. He puesto este .dll manualmente en el servidor y ahora funciona.

Gracias por tu ayuda GrantThomas.


0 para la respuesta № 2

En realidad es referencia de Microsoft.IdentityModel con ruta:

C: Archivos de programaReference AssembliesMicrosoftWindows Identity Foundationv3.5Microsoft.IdentityModel.dll

Si tienes instalado un VS