Tengo una clase pequeña como

public static class TSM
{

    static string TokenID = "";

    public static string GetTSM()
    {
        TokenID = new Guid().ToString();
        return TokenID;
    }

}

`GetTokenID `will return a string

Acabo de llamar a GetTokenID desde mi página aspx como

<script language="javascript" type="text/javascript">
    var token= <% =TSM.GetTSM() %>;

Recibo un error cuando estoy ejecutando esa página aspx.

El error es

Descripción del error de compilación: se produjo un error durante la compilación de un recurso necesario para atender esta solicitud. Revise los siguientes detalles específicos del error y modifique su código fuente de manera apropiada.

Mensaje de error del compilador: CS1002:; previsto

Por favor, guíame sobre lo que está saliendo mal. Gracias

0
Thomas 31 ago. 2011 a las 12:49

1 respuesta

La mejor respuesta

Debe incorporar el espacio de nombres en el que se declara esta clase de TSM en el ámbito de su página web:

<%@ Import Namespace="SomeNamespace" %>
...
<script type="text/javascript">
    var token = '<%=TSM.GetTSM() %>';
</script>

O citarlo completamente:

<script type="text/javascript">
    var token = '<%= SomeNamespace.TSM.GetTSM() %>';
</script>

O inclúyalo en la sección <namespaces> de su web.config.

Observación: observe el '' alrededor del <%=TSM.GetTSM() %> ya que no hay ningún tipo de Guid en javascript. Debes usar una cuerda.

También tenga en cuenta que el código del lado del servidor no es seguro para subprocesos debido a la asignación de este campo estático. Además, siempre generará un guid vacío.

He aquí cómo mejorarlo:

public static class TSM
{
    public static string GetTSM()
    {
        return Guid.NewGuid().ToString();
    }
}
5
Darin Dimitrov 31 ago. 2011 a las 13:05
Ya, ahora está bien, gracias, pero guid se ve como var token = '00000000-0000-0000-0000-000000000000' .... en realidad, guid se ve diferente.
 – 
Thomas
31 ago. 2011 a las 12:57
@Thomas, debe usar TokenID = Guid.NewGuid().ToString(); si desea generar una nueva guía. El constructor de Guid no genera un nuevo guid.
 – 
Darin Dimitrov
31 ago. 2011 a las 12:57
GetTSM devolverá el guid del lado del servidor y cuando veo el guid en la fuente de la página aspx en tiempo de ejecución, encontré un guid como var token = '00000000-0000-0000-0000-000000000000' ... creo que no es válido guid.
 – 
Thomas
31 ago. 2011 a las 12:59