有一個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