所以,当我在服务器上向PUT
发出ajax请求时,我会定期抛出异常:
System.ServiceModel.ServiceActivationException
每当我刷新页面并第一次执行PUT
请求时,我总是会收到此错误。如果我使用相同的内容立即再次发送相同的请求,它可以工作。未来的请求有时会再次出现此错误。当页面首次加载时,会执行许多GET
次请求,并且他们永远不会遇到此问题。
Ajax调用是:
$.ajax({
url: uri,
type: "PUT",
data: contents,
processData: false,
dataType: "json",
success: settings.success,
error: settings.error
});
调用的C#函数是
[OperationContract]
[WebInvoke(UriTemplate = "users/{userName}/projects/{projectName}/{*fileName}", Method = "PUT", ResponseFormat = WebMessageFormat.Json)]
string PutFile(string userName, string projectName, string fileName, Stream fileContents);
从事件查看器日志中可以看到错误详细信息:
WebHost failed to process a request.
Sender Information: System.ServiceModel.Activation.HostedHttpRequestAsyncResult/45004378
Exception: System.ServiceModel.ServiceActivationException: Request to the service at '~/' cannot be dispatched because the virtual application at '/bb' is shutting down.
---> System.InvalidOperationException: Request to the service at '~/' cannot be dispatched because the virtual application at '/bb' is shutting down.
我已尝试通过以下链接停用应用程序回收:https://serverfault.com/questions/333907/what-should-i-do-to-make-sure-that-iis-does-not-recycle-my-application
但它根本没有帮助。在我提出请求时,我的应用程序关闭的原因可能是什么?
答案 0 :(得分:1)
所以问题是我一个接一个地发送了一个PUT请求。我在它们之间添加了250ms的小延迟,这个错误不再是问题。
编辑:对延迟的需求太烦人了,所以我更多地研究了它。我遇到问题的原因是因为我正在写入Web应用程序的bin文件夹。
Does any change in any file inside bin folder cause application recycle in ASP.NET web application?