Ajax PUT请求:System.ServiceModel.ServiceActivationException:虚拟应用程序正在关闭

时间:2014-06-07 00:10:14

标签: asp.net ajax wcf iis

所以,当我在服务器上向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

但它根本没有帮助。在我提出请求时,我的应用程序关闭的原因可能是什么?

1 个答案:

答案 0 :(得分:1)

所以问题是我一个接一个地发送了一个PUT请求。我在它们之间添加了250ms的小延迟,这个错误不再是问题。

编辑:对延迟的需求太烦人了,所以我更多地研究了它。我遇到问题的原因是因为我正在写入Web应用程序的bin文件夹。

Does any change in any file inside bin folder cause application recycle in ASP.NET web application?