Es gibt einen WCF-Dienst. Die Methode, auf die ich zugreifen muss, hat 1 Parameter als Eingabe whoes type ist Stream.So senden Sie Byte-Array in jmeter Postanforderung
Ich weiß nicht, wie Stream-Objekt von JMeter zum WCF-Dienst bereitzustellen.
Zur Zeit habe ich eine C# -Methode (MVC Project) geschrieben, die eine Zeichenfolge von JMeter akzeptiert und sie dann in ein Stream-Objekt konvertiert, das dann vom WCF-Dienst verarbeitet wird. Aber dieser Ansatz nicht geben nicht die tatsächliche Leistung des WCF-Dienst nicht geben
[WebInvoke(UriTemplate = "", Method = "POST")]
[OperationContract]
public Stream ReceiveChirp(Stream fileContents)
{
string response = "";
long ticks = DateTime.Now.Ticks;
DateTime receiveTime = DateTime.Now;
Derzeit i eine Ausnahme von Objekttyp bin immer. Hier
ist die Ausnahme:
<p class="heading1">Request Error</p>
<p xmlns="">The server encountered an error processing the request. Please see the <a rel="help-page" href="http://t2vnmeterservicessciexp.cloudapp.net/ReceiveChirp/help">service help page</a> for constructing valid requests to the service. The exception message is 'Object reference not set to an instance of an object.'. See server logs for more details. The exception stack trace is: </p>
<p> at Base.VN.Core.Generic.GenericExtensions.ChirpGenerator.ConvertStringToByteArray(String input)
at T2.VN.Core.MeterServices.MainEndPoint.ReceiveChirp(Stream fileContents)
at SyncInvokeReceiveChirp(Object , Object[] , Object[])
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)</p>
Der Code meine Kollegen Unit-Test verwendet die gleiche:
public string TestServicePacket(string data)
{
var url = "http://test.net/";
var requestUrl = string.Format("{0}/ReceiveChirp/", url);
var request = (HttpWebRequest)WebRequest.Create(requestUrl);
request.Timeout = Timeout.Infinite;
request.Method = "POST";
request.ContentType = "text/plain";
var dataTrailing = "&UserName=eReg&UserPassword=abc123";
var dataTrailingBytes = Encoding.ASCII.GetBytes(dataTrailing);
var bChirp = ConvertStringToByteArray(data);
var ToSend = new byte[dataTrailingBytes.Length + bChirp.Length];
ToSend = bChirp.Concat(dataTrailingBytes).ToArray();
request.ContentLength = ToSend.Length;
using (var requestStream = request.GetRequestStream())
{
// Send the file as body request.
requestStream.Write(ToSend, 0, ToSend.Length);
requestStream.Close();
}
var response = (HttpWebResponse)request.GetResponse();
var responseStream = response.GetResponseStream();
var memoryStream = new MemoryStream();
string resultResponse;
resultResponse = ConvertStream(responseStream);
return resultResponse;
}
Können Sie eine Ausnahme hinzufügen und wie sieht Ihr Testplan aus? – user7294900