【发布时间】:2011-11-04 09:22:11
【问题描述】:
我随机收到此错误,有时显示有时不显示!
错误:
现在它消失了:S!但它会在接下来的几个小时内出现! 简单地说,它表明参数化查询需要一个未提供的参数“@PorfilePic”,尽管它已提供并且网站在本地工作并且也在服务器上工作。我不更改代码,提供商不更改任何设置。
有人告诉我,我超过了 AppPool 的内存限制 250 MB,但我认为它应该会在我超过之后出现,并且在池休息后它应该可以正常工作。但这是一周前的情况。现在它只是随机工作数小时并随机显示此错误!所以我希望也许有人遇到同样的错误并可以帮助解决它。
顺便说一句,这是一个共享的 Windows 主机帐户。我和我的供应商谈过,老实说,我认为他们在所有方面都很好(Seriosuly),但除了发现这个特定错误之外的所有方面! :D
守则:
.Aspx Page:
<li>
Profile Picture:
<asp:FileUpload ID="ProfilePic_Upld" runat="server" ViewStateMode="Enabled" /><br />
</li>
文件背后的代码:
if (ProfilePic_Upld.HasFile)
{
string fileType = ProfilePic_Upld.PostedFile.ContentType;
if (fileType == "image/bmp" || fileType == "image/gif" || fileType == "image/jpeg" || fileType == "image/png")
{
if (ProfilePic_Upld.PostedFile.ContentLength <= 10485760)
{
string ppFileName = ProfilePic_Upld.PostedFile.FileName;
string savedFileName = newCruise.Name + "_pp" + ppFileName.Substring(ppFileName.IndexOf('.'));
string cruisePpUploadPath = Server.MapPath(ConfigurationManager.AppSettings["cruisesPpUploadPath"].ToString());
ProfilePic_Upld.SaveAs(cruisePpUploadPath + savedFileName);
newCruise.ProfilePic = savedFileName;
}
}
}
else
{
newCruise.ProfilePic = "default.jpeg";
}
Web.config(ApplicationSettings 部分):
<appSettings>
<add key="cruisesPpUploadPath" value="~\resouces\cruises\cruise_pp\" />
<add key="cruisesDpUploadPath" value="~\resouces\cruises\cruise_dp\" />
<add key="cruisesClUploadPath" value="~\resouces\cruises\cruise_cl\" />
<add key="cruiseItinerariesPpUploadPath" value="~\resouces\cruises\itineraries\iti_pp\" />
<add key="cruiseItinerariesMapsUploadPath" value="~\resouces\cruises\itineraries\iti_maps\" />
<add key="cruiseReviewDocumentsUploadPath" value="~\resouces\cruises\reviews\" />
</appSettings>
邮轮舱(newCruise)
public class Cruise
{
public int ID
{ get; set; }
public string Name
{ get; set; }
public int CountryID
{ get; set; }
public string ProfilePic
{ get; set; }
public string Description
{ get; set; }
public int OfficialRate
{ get; set; }
}
用于创建新巡航的 DAL 方法
public static int AddNewCruise(Cruise NewCruise)
{
string commandText = "INSERT INTO Cruises (Name, CountryID, ProfilePic, Description, OfficialRate) VALUES (@Name, @CountryID, @ProfilePic, @Description, @OfficialRate); SELECT scope_identity();";
int newCruiseId;
Cruise newCruise = NewCruise;
string name = newCruise.Name;
int countryId = newCruise.CountryID;
string profilePic = newCruise.ProfilePic;
string desc = newCruise.Description;
int officialRate = newCruise.OfficialRate;
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand command = new SqlCommand(commandText, connection))
{
command.Parameters.AddWithValue("@Name", name);
command.Parameters.AddWithValue("@CountryID", countryId);
command.Parameters.AddWithValue("@ProfilePic", profilePic);
command.Parameters.AddWithValue("@Description", desc);
command.Parameters.AddWithValue("@OfficialRate", officialRate);
connection.Open();
newCruiseId = Convert.ToInt32(command.ExecuteScalar());
return newCruiseId;
}
}
}
注意,我的截止日期快要到期了,所以如果有人认为这是服务器的问题,我希望你能推荐一些好的 Windows 共享主机提供商。
注意 (2) 我上传的图片不超过 1 MB!
N.B (3) 伙计们,这是一个非常重要的注意事项。该网站现在可以正常工作,但是您对处理上传的文件是正确的(顺便说一句,我更新为包含大小和文件类型的 else 块,如果条件通过提供错误消息然后返回;)但是实际问题是我使用相同的代码、相同的网站、相同的服务器和 iis 设置。所以相同的应用程序,我也更新了相同的图像,但我随机收到错误。这不可能是关于文件处理的!我上传了大小为 105 KB 的 jpg 图像。一天有效,一天无效!所以但是你处理文件是完全正确的,我已经听从了你的建议,因为这是我系统中的一个缺陷,但这不是问题的原因。我真希望它可以这么简单!
结论:
首先,问题是我在使用 Firefox 的个人 PC 上进行开发时进行测试,然后我和客户在我们使用 Internet Explorer 的商务 PC 上跟进工作。问题在于没有处理大小和类型这两个条件,所以我不接受上传的文件但我仍然调用数据库方法,所以这是第一步。然后我只是按照建议并在任何条件不满足时返回,所以我将同一张图片上传到我的应用程序的两个不同实例(一个从 IE 打开,另一个从 FireFox 打开)。 Firfox 上传正常,但 IE 现在显示类型错误。我做了一些研究,结果发现 IE 将 jpg 和 png 作为渐进类型(PJPEG 和 X-PNG)接收,因此通过添加我的类型条件 image/jpeg 和 image/x-png 一切正常。
感谢您的宝贵时间,非常感谢 =)。我希望这个问题有所帮助,如果这是 IE 中的一个著名事物,我不知道,但对我来说,我认为这很奇怪,我相信其他人正在研究同样的问题!
【问题讨论】:
-
谁投票支持我的问题,如果你有同样的错误,我们应该谈谈! :S lol .. 伙计们,你能相信我已经在这个神话中生活了一个多星期!
-
你能用准确的消息和堆栈跟踪发布整个异常吗?您的代码中的
newCruise是什么? -
您提到错误在
@PorfilePic附近 - 但没有显示似乎与此相关的代码......? -
代码似乎与给出的微小错误信息无关。我认为无论谁赞成这个问题都没有阅读它。
-
好的 newCruise 是我班级的一个对象,@ProfilePic 是 DAL 查询中的参数。无论如何,我现在将添加类代码和 DAL 方法。我同意 Andrew,我认为它与代码无关,因为它工作然后停止,然后出现! ..我现在无法发布确切的错误,因为遗憾的是它现在正在工作。但是,每当我再次收到错误时,我都会尝试将其包含在内,或者我会尝试找到我为错误拍摄的屏幕截图。
标签: c# asp.net visual-studio-2010 sql-server-2008