我有几个应用程序托管在同一个Web服务器上,并且由于缺乏更好的描述,它们会在短时间内暂停。我应该指出,在这个服务器上我没有看到内存或CPU峰值,磁盘延迟也不是问题。
每个应用程序的工作方式可能略有不同,但显示问题的一个简洁示例是:
public partial class Listener : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Context.Response.ContentType = "text/xml";
if (Request.ServerVariables["REQUEST_METHOD"] != "POST")
{
//...
Response.Write(Tools.WrapError("Request type was not POST - Page Loaded in browser?"));
return;
}
try
{
if (Request.InputStream.Length > 0)
{
StreamReader sr = new StreamReader(Request.InputStream);
string content = sr.ReadToEnd();
... and so on...
我看到的问题是读取流最多需要10秒,读取20-50个字节。
当发生这种情况时,我看到各种应用程序的行为非常相似,所以我的问题是......
'Request.InputStream'在哪里?我是从RAM中读取的,还是直接从网络读取的?
我这样做的方式是否存在根本性的错误?我不认为我,因为大部分时间这个过程只需要几毫秒,正如我所说,一些应用程序略有不同。 例如,这个应用程序是一个简单的网页,但另一个应用程序使用'xmlDoc.Load(Context.Request.InputStream);'实现IHttpHandler接口。阅读输入流。