2016-12-13 3 views
0

Ich habe Web-Methode alsStatische Variablen in WebApplication/WebMethods

folgenden
static FileTypeData DataLine = null; 
static string FilePath = ""; 
static string MarketName = string.Empty; 
static string FileType = string.Empty; 

[WebMethod] 
public static string GetData (string MarketName, string Category, string Symbol) 
{ 
    MarketName = MarketName.ToLower(); 
    FileType = ""; 
    Category = Category.ToLower(); 
    Symbol = SymbolToLower(); 
    return Start(); 
} 

MarketName, FileType, Category und Symbolprivate static Variablen sind.
Das Problem ist, wenn GetData Web-Methode verlassen und zu Start Methode diese Variablen auf ihre ursprünglichen Werte zurückgesetzt, das heißt, sie sind leer. Ich möchte wissen, warum dieses Verhalten existiert.

Hinweis: Ich rufe diese Web-Methode von Ajax Anfrage.

+3

Profi-Tipp: Code als Text eingeben und in einen Codeblock umwandeln. Siehe den Button ** '{}' ** im Frageneditor. –

+0

Bitte geben Sie Ihren Code in Ihre Frage ein –

+0

Verwenden Sie keine statischen Variablen auf diese Weise. Übergeben Sie die Variablen an 'Start()', oder Sie werden Probleme haben, wenn mehr als ein System diese API aufruft. – CodeCaster

Antwort

1

Wenn die Parameter Ihrer Methode denselben Namen wie statische Variablen haben, werden die Parameter verwendet. Wenn Sie also MarketName einen Wert zuweisen, wird der Wert Ihres Parameters nicht von Ihrer Variablen geändert!

Um dies zu ändern, müssen Sie den Namen der Klasse vor dem Variablennamen hinzufügen:

[WebMethod] 
public static string GetData (string MarketName, string Category, string Symbol) 
{ 
    MyClassName.MarketName = MarketName.ToLower(); 
    // ... 
} 

Wichtig: Wenn Sie diese Werte verwenden innerhalb von Start() Sie diese Parameter übergeben sollte anstelle von statischen Variablen!

+0

danke es funktioniert gut mit mir. –

+1

@PulsarMist es funktioniert gut, während mit einem Browser testen, aber sobald mehrere Benutzer diese API verwenden, wird es Probleme verursachen. Lies das Duplikat. – CodeCaster