我正在从网页调用我的web服务并在我的web.config文件中设置非常高的值时获得超时。当文件通常非常大但 但文件仍然完全上载 时(如果不发生超时DID),这会间歇性地发生。这是我的.aspx文件中的一个函数,它调用我的ASMX代理类:
private void UploadFile(HttpPostedFile postedFile, string fileNameOnly)
{
// create an instance of the proxy class to talk to our service; calling it client:
string strURI = string.Empty;
WSproxyProject.ASMXProxy.FileService client = new WSproxyProject.ASMXProxy.FileService();
try
{
BinaryReader b = new BinaryReader(postedFile.InputStream);
byte[] binData = b.ReadBytes(numBytes);
strURI = client.UploadFile(binData, fileNameOnly, binData.Length);
txtURI.Text = strURI;
LogText("SUCCESS: " + fileNameOnly + " has been uploaded. URI=" + strURI);
}
catch (Exception ex)
{
LogText("UPLOAD ERROR: " + ex.Message.ToString());
}
}
请注意,我在localhost上的Web服务会调用另一个实际存储最终数据的Web服务。我在以下所有地方的web.config中都有以下executionTimeout设置:
vendorWebService上的web.config(驻留在我局域网中的另一台服务器上)
上面代码块捕获的异常显示ex.Source为System.Web.Services,ex.Message为:
操作已超时
答案 0 :(得分:1)
如果在方法中设置Web服务超时长度会发生什么?
...
WSproxyProject.ASMXProxy.FileService client = new WSproxyProject.ASMXProxy.FileService();
client.Timeout = 9999999;
try
...
也许您还需要为FileService使用的其他Web服务设置类似的超时属性。
我必须为使用功能不足的开发数据库的Web服务调用执行此操作。我宁愿让一个Web服务准备执行超过需要的时间而不是抛出异常。
祝你好运。答案 1 :(得分:0)
一些头脑风暴:
希望有一些帮助。