J'ai une méthode webservice:
temps de réponse webservice augmenté ... comment?
[WebMethod]
public Response Process()
{
return RunCode();
}
ExécuterCode() prend 6 secondes pour exécuter mais IIS/navigateur prend plus de 20 secondes pour revenir le XML.
Si je prends ExécuterCode() et le mettre dans un fil, maintenant retourne en 6 secondes:
private _response Response;
[WebMethod]
public Response Process()
{
new Thread(RunProcess).Start()
while(_response==null)
{
Thread.Sleep(100);
}
return _response;
}
private void RunProcess()
{
_response=RunCode();
}
Ma question est ... ce qui pourrait se produire dans ExécuterCode() pour forcer IIS /ASP.NET pour retarder la réponse? Le code ne prend que 6 secondes pour s'exécuter ... Une sorte de ressource est-elle bloquée et verrouillée si elle n'est pas sur un thread séparé, donc ASP.NET l'attend?
Édition 1: un exemple de réponse a été demandé. Un exemple de la réponse est la suivante:
<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>
basé hors de cette classe:
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
}
Combien de fois avez-vous le test après avoir effectué une réinitialisation IIS? – Maess
Quelle est la sortie retournée par la méthode? De plus, vous n'avez pas besoin de faire une boucle "occupée". Vous pouvez faire thread.Join() sur le thread que vous avez créé. – Candide
Votre code peut prendre 6 secondes pour s'exécuter, mais combien de travail IIS doit-il faire pour vous renvoyer les résultats et accepter le message de votre part? –