有一个WCF服务。我必须访问的方法有1个参数作为输入whoes类型是Stream。如何在jmeter发布请求中发送字节数组
我不知道如何从JMeter提供流对象到WCF服务。
目前我已经写了一个C#方法(MVC项目),它接受来自JMeter的字符串,然后将其转换为Stream类型的对象,而不是由WCF服务处理。但这种做法并不给予WCF服务的实际性能
[WebInvoke(UriTemplate = "", Method = "POST")]
[OperationContract]
public Stream ReceiveChirp(Stream fileContents)
{
string response = "";
long ticks = DateTime.Now.Ticks;
DateTime receiveTime = DateTime.Now;
目前我收到了对象类型的异常。
这里是个例外:
<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>
我的同事正在使用的代码进行单元测试一样:
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;
}
你可以添加异常,你的测试计划是什么样子? – user7294900