私はWebサービスメソッドがあります。
ウェブサービスの応答時間が増加しました...どうですか?
[WebMethod]
public Response Process()
{
return RunCode();
}
RUNCODEは()を実行するために6秒かかりますが、IIS /ブラウザがXMLを返すように20+秒かかります。
私はRUNCODE()を取ると、スレッドに入れた場合、それは今6秒で返します。
private _response Response;
[WebMethod]
public Response Process()
{
new Thread(RunProcess).Start()
while(_response==null)
{
Thread.Sleep(100);
}
return _response;
}
private void RunProcess()
{
_response=RunCode();
}
私の質問は、これは、IISを強制的に)(RUNCODEで何が起こって何ができるか...です/ASP.NETは応答を遅らせますか?コードの実行には6秒しかかかりません。リソースが別のスレッドになければ、何らかのリソースが縛られロックされているので、ASP.NETはそれを待ちますか?
編集#1:応答の例が要求されました。 応答の例は、このです。このクラスのオフに基づい
<PostResponse>
<isValidPost>false</isValidPost>
<ResponseType>Post_Over_Max</ResponseType>
<ResponseDetails>System is currently at max leads allowed</ResponseDetails>
<LeadIdentifier>0</LeadIdentifier>
<VendorAccountAssigned>0</VendorAccountAssigned>
<PendingQCReview>false</PendingQCReview>
<Price>0</Price>
<RedirectURL/>
</PostResponse>
:
public class PostResponse : IPostResponse
{
public PostResponse()
{
}
public PostResponse(bool isValid, ResponseErrors responseType, string details, long leadIdentifier,
long vendorAccountAssigned, bool pendingQCReview, double price, string redirectUrl)
{
isValidPost = isValid;
ResponseType = responseType;
ResponseDetails = details;
LeadIdentifier = leadIdentifier;
VendorAccountAssigned = vendorAccountAssigned;
PendingQCReview = pendingQCReview;
Price = price;
RedirectURL = redirectUrl;
}
#region IPostResponse Members
public bool isValidPost { get; set; }
public ResponseErrors ResponseType { get; set; }
public string ResponseDetails { get; set; }
public long LeadIdentifier { get; set; }
public long VendorAccountAssigned { get; set; }
public bool PendingQCReview { get; set; }
public double Price { get; set; }
public string RedirectURL { get; set; }
#endregion
}
? – Maess
メソッドが返す出力の量はどれくらいですか?また、 "ビジー" whileループを実行する必要はありません。作成したスレッドでthread.Join()を実行できます。 – Candide
コードを実行するのに6秒かかることがありますが、結果を返すためにIISが必要とする作業はどれくらいありますか? –