else
strPath = Path.Combine(Server.MapPath("~/" + strFileToUpload + strVendorNo), fileName);
if (!string.IsNullOrEmpty(strPath))
{
strReturnMssg = strPath;
fileItem.SaveAs(strPath);
}
}
}
else
strReturnMessage = "Selected file should be less than 5ΜB.";
}
}
}
}
}
catch (Exception ex)
{
Response.Write("<!--" + ex.Message + "-->");
}
return strReturnMssg;
}
无法将附件文件发送到仅服务器的路径 错误11中出错必须在控制离开当前方法之前指定out参数'strReturnMessage'
答案 0 :(得分:0)
您的返回消息变量似乎不是在try-catch块中发生错误时定义的。只需在方法开头设置strReturnMssg = string.Empty或默认值即可。
答案 1 :(得分:0)
错误是因为在您离开方法之前,您尚未在某个范围内为out
参数分配值。例如:
bool TrySomeMethod(bool someCondition, out int someValue)
{
if (someCondition)
{
someValue = 1;
return true;
}
else
{
return false;
}
}
会给你相同的编译时错误,因为在else语句中的return语句之前没有分配someValue
。
要解决此问题,您可以在返回前指定一个值:
someValue = -1;
return false;
或在方法的顶部,您可以为out
参数指定一些默认值,即
someValue = -1;
if (someCondition)
//....
然而,使用这种方法,您必须小心将out
参数设置为您希望它成功的参数,因为没有错误,即
bool TrySomeMethod(bool someCondition, out int someValue)
{
someValue = -1;
if (someCondition)
{
return true;
}
else
{
return false;
}
}
那将编译正常,但是存在一个逻辑问题,因为someValue
永远不会在if语句中设置为1
。
请注意,在您的特定情况下,您的方法希望strReturnMessage
为out
参数,并且您还从方法strReturnMssg
返回一个非常相似的命名变量。如果你需要两条回复信息,那么你的逻辑就不行了。