2015-01-14 7 views
22

Mit VS2015 und asp.net 5, wenn ich versuche, meine Website mithilfe einer Instanz von System.Net.HttpClient zu kompilieren, es sagt mir:HttpClient in ASP.NET 5.0 nicht gefunden?

Der Typ oder Namespace-Name ‚Httpclient‘ konnte nicht gefunden werden (? Sie sind eine using-Direktive oder ein Assemblyverweis fehlt)

den problematischen Code Bewegen der Maus über, ich sehe:

"WebApplication1.ASP.NET 5.0 - Available" 
"WebApplication1.ASP.NET Core 5.0 - Not Available" 

ich habe 2-Frameworks in meiner project.json-Datei aufgelistet:

"frameworks": { 
    "aspnet50": { }, 
    "aspnetcore50": { } 
}, 

Ich gehe davon aus, dass einer von ihnen verantwortlich ist, indem nicht die Versammlung mit, aber ich weiß wirklich nicht, wie es zu beheben oder wie das funktioniert.

Wie kann ich die Website mit HttpClient ausführen, anstatt Fehler zu werfen? Die beanstandeten Methode unten geschrieben:

private async Task<string> GetStringFromUri() 
{ 
    using (var httpClient = new HttpClient()) 
    { 
     result = await httpClient.GetStringAsync(
     new Uri("http://baconipsum.com/api/?type=meat-and-filler")); 

     viewModel= result; 
     return viewModel; 
    } 
} 

Antwort

15

Schließlich finden hatte alles geklappt. @yuval hat mich mit seiner Antwort zum Hinzufügen von Abhängigkeiten auf den richtigen Weg gebracht und darauf hingewiesen, dass die Klasse auf GitHub existiert. Ferner führte ich Benutzer, um herauszufinden, dass die Klasse scheint nicht nur noch in der Preview-Version enthalten zu sein, und ich hatte diesen nuget Repo mein Projekt hinzuzufügen: https://www.myget.org/gallery/aspnetvnext

In diesem Repo jede Nacht sind die Builds asp.net vnext nugget-Pakete, die die Klasse enthalten, die ich möchte. Hinzufügen der folgenden Zeile zu meinem Haupt-Abhängigkeiten Abschnitt und zu den beiden Frameworks Abhängigkeiten Abschnitte bekam dies für mich arbeiten: „Microsoft.Net.Http.Client“: „1.0.0.0-rc1-10049“

"dependencies": { 
    [...], 
    "Microsoft.Net.Http.Client": "1.0.0.0-rc1-10049" 
}, 
"frameworks": { 
    "aspnet50": { 
     "dependencies": { 
      "Microsoft.Net.Http.Client": "1.0.0-rc1-10049" 
     } 
    }, 
    "aspnetcore50": { 
     "dependencies": { 
      "Microsoft.Net.Http.Client": "1.0.0-rc1-10049" 
     } 
    } 
} 
+0

Stellen Sie sicher, dass Sie die https: //www.myget hinzufügen .org/gallery/aspnetvnext nugget Paketquelle zuerst in der Liste oder sonst wird es nicht funktionieren. Ich habe das nur herausgefunden, indem ich alle anderen Paketquellen deaktiviert habe. Ich habe die GUI von Manage Nuget Packages verwendet, um sie zu installieren, und sie fügte die Abhängigkeit nur zu den "Abhängigkeiten" der obersten Ebene hinzu und nicht zu den Framework-Abhängigkeiten. Ich verwende Visual Studio 2015 CTP6. – pholly

+0

Auch HttpClient ist in System.Net.Http. Das seltsame Ding ist, als ich Microsoft.Net.Http.Client entfernte und versuchte, System.Net.Http (4.0.0-Beta von aspnetvnext) hinzuzufügen, konnte ich es in der Abhängigkeiten Struktur im Projektmappen-Forscher sehen, aber HttpClient fehlte. Das Installieren von Microsoft.Net.Http.Client, das eine Abhängigkeit von System.Net.Http 4.0.0-beta hat, funktioniert jedoch. – pholly

+0

Neueste Version ist jetzt 1.0.0-beta3-10053 –

6

Sie benötigen eine neue Quelle zu Ihrem nuget Paket-Manager (https://www.myget.org/F/aspnetvnext) hinzufügen und dann Abhängigkeiten zu Ihrer project.json Datei hinzufügen. Sowohl für dnx451 und dnxcore50:

{ 
    "frameworks": { 
     "dnx451": { 
     "frameworkAssemblies": { 
      "Microsoft.Net.Http.Client": "1.0.0-beta3-10053" 
       } 
     }, 
     "dnxcore50": { 
      "frameworkAssemblies": { 
       "Microsoft.Net.Http.Client": "1.0.0-beta3-10053" 
       } 
      } 
} 

Es wird als Teil des Pakets ASP.Net xNext implementiert, wie sie erklären, auf github:

Fully Managed HttpMessageHandler Implementierung auf Basis von Sockets.

Dieses Projekt gehört zu ASP.NET vNext. Sie können Beispiele, Dokumentation und erste Schritte für ASP.NET vNext um das Home Repo finden.

Ein vollständiger Durchlauf here

+0

Vielen Dank für die Hilfe bei diesem. Ich werde es später heute Abend versuchen. Würde es Ihnen etwas ausmachen zu erklären, wie ich solche Abhängigkeiten für C# 6 finden kann, da es auf Microsoft-Websites noch keine Dokumente zu haben scheint? – damccull

+0

@damccull Ich würde vorschlagen, die [ASP.NET vNext-Zweigstelle] (https://www.myget.org/gallery/aspnetvnext) –

+1

Vielen Dank. Sobald ich eine Chance habe, diesen Code auszuprobieren, werde ich dies als die Antwort markieren. – damccull

3

einfach hinzufügen diese zu Ihrem project.json

"dependencies": { 
    ... 
    "Microsoft.Net.Http": "2.2.7-beta" 
}, 

oder was auch immer die neueste Version ist.

+0

Welchen Frameworks zielen Sie? Ich habe die Referenz hinzugefügt, aber nicht gefunden. – user3285954

+0

@ user3285954 zu der Zeit, als wir auf DNX beta 8 sind, und ich sehe nicht, dass wir explizit auf die Microsoft.Net.Http-Bibliothek verweisen. Aber zurück in Beta 4 haben wir '" Microsoft.Net.Http ":" 2.2.7-Beta "' – Alkasai

0

Es gab einen fehlenden Link in diesem Thread für mich .... Sie müssen die https://www.myget.org/gallery/aspnetvnext NuGet-Quelle hinzufügen, aber die tatsächliche NuGet-Feed-URL dafür ist "https://www.myget.org/F/aspnetvnext/".Sobald Sie das als Ihre Nugget-Quelle haben, wird der Rest zum Leben erweckt.

Zum Zeitpunkt des Schreibens (17. Juni 2015) ist die Version "Microsoft.Net.Http.Client": "1.0.0-beta3-10053".

Sie werden auch die aktualisierten ‚Frameworks‘ Abschnitt von Matt DeKreys bearbeiten am 7. Juni (dnx451 und dnxcore50) verwenden müssen

4

ich Probleme hatte heute in RC1 zu finden:

Für jeden, der findet diese Frage von dort, HttpClient ist jetzt im Namespace System.Net.Http.

11

Ich habe das gleiche Problem heute begegnet, und die Lösung ist etwas einfacher geworden in 2016.

Es ist nicht erforderlich, ein neues Nuget Repository mehr hinzuzufügen.

Wenn Sie System.Net.Http (aktuelle Version 4.0.1-beta-23516) hinzufügen, erhalten Sie immer noch denselben Fehler, wenn Sie sowohl eine clr- als auch eine core-Framework-Version verwenden. Kopieren Sie daher die Abhängigkeit in das dnxcore-Framework Abhängigkeitsliste, um den Code kompilieren zu lassen.

Vorher:

"frameworks": { 
    "dnx451": { 
     "dependencies": { 
     "System.Net.Http": "4.0.1-beta-23516" 
     } 
    }, 
    "dnxcore50": { } 
    } 

Nach:

"frameworks": { 
    "dnx451": { 
     "dependencies": { 
     "System.Net.Http": "4.0.1-beta-23516" 
     } 
    }, 
    "dnxcore50": { 
     "dependencies": { 
     "System.Net.Http": "4.0.1-beta-23516" 
     } 
    } 
    } 
Verwandte Themen