500-Systems.ServiceModel.ServiceActivationException wenn Sie einen Ajax-Aufruf von WCF rest service
Ajax-Aufruf:
$.ajax({
type: "POST",
url: "http://SomeService/ServiceName.svc/GetSearchResults",
data: JSON.stringify({ parameters: serviceParameters }),
contentType: "application/json; charset=utf-8",
dataType: "XML",
success: function (response) {
$("#xmlText").text(response.xml);
},
error: function (msg) {
alert(msg.toString);
}
})
WCF-Schnittstelle:
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Xml, RequestFormat = WebMessageFormat.Json,
UriTemplate = "GetSearchResults")]
XElement GetSearchResults(inputParameters parameters);
[OperationContract]
[WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, UriTemplate = "getFile")]
Stream GetFile(DocInfo info);
Web.config:
<system.web>
<compilation debug="true" targetFramework="4.0" />
<customErrors mode="Off"/>
</system.web>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
<system.serviceModel>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true">
</serviceHostingEnvironment>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true"></standardEndpoint>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
Der service gehostet wird, auf IIS6.
Wenn ich den service aufzurufen bekomme ich die folgende Fehlermeldung:
500 System.ServiceModel.ServiceActivationException
Kann ich nennen die GetFile
Methode und Holen Sie den response-stream, aber ich bekomme die Fehlermeldung beim Aufruf GetSearchResults
.
Jede Hilfe wird geschätzt.
- Ich würde vorschlagen, Sie zum aktivieren der Ablaufverfolgung (msdn.microsoft.com/en-us/library/ms733025.aspx), und überprüfen Sie das Ablaufverfolgungsprotokoll für das genaue problem beim aufrufen der Methode GetSearchResults
Du musst angemeldet sein, um einen Kommentar abzugeben.
Begegnete ich diesem Fehler auf den Grund der unten erwähnten
Speicher-Tore-überprüfung fehlgeschlagen, da der freie Speicher (258187264 bytes) weniger als 5% des Gesamtspeichers. Als Ergebnis der Dienst nicht zur Verfügung für eingehende Anfragen. Um dies zu beheben, verringern Sie die Last auf der Maschine, auf oder passen Sie den Wert der minFreeMemoryPercentageToActivateservice auf das serviceHostingEnvironment-config-element.
Vielen Dank für Ihre inspirierte Antworten und Kommentare.
Ich tatsächlich mal mit dem gleichen Fehler, aber mit unterschiedlicher Geschichte:
Zunächst bekam ich "404 (Nicht Gefunden)" server-Fehler, das ist, weil ich nicht haben einen transport für "HTTPS" sowie ich habe bereits einen für die "HTTP".
Habe ich ein
<httpsTransport>
zu meinem<binding>
element, so sah es so aus:Dann hab ich die
500 System.ServiceModel.ServiceActivationException
Fehler. Aber ich schaff "Ereignis-Viewer - > Windows-Log - > - Anwendung" und fand, dass "transportiert definiert werden kann nicht mehr als eine Zeit für die gleiche Bindung". Also entschied ich mich für das hinzufügen eines weiteren Endpunkt eine neue Bindung für die "HTTPS" - Verkehr.Am Ende, meine Konfiguration sieht wie folgt aus:
Dann alle Dinge geht, die richtige Art und Weise und funktioniert perfekt.
Falls Sie entwickeln auf visual Studio und IIS-Express "Cassini", erinnern Sie sich zum aktivieren der SSL-option in den Eigenschaften der website-Projekt, sagt das IIS-Express-bereiten Sie eine Basis-URL für den HTTPS-transport, die Sie zuvor Hinzugefügt, um verbindlich.