use*_*625 4 c# asp.net profile image visual-studio-2013
我正在尝试使用asp.net Profile功能来存储用户信息.我在配置文件属性中有一个图像.
我正在使用Visual Studio中asp.net提供的默认配置文件提供程序.
以下是web.config中属性的定义
<properties>
<add name="FirstName"/>
<add name="MiddleName"/>
<add name="LastName"/>
<add name="ProfileImage" type="System.Byte[]" defaultValue='null'/>
<add name="MobileNumber"/>
<add name="TelephoneNumber"/>
</properties>
Run Code Online (Sandbox Code Playgroud)
这是代码:
protected void Button1_Click(object sender, EventArgs e)
{
var profile = HttpContext.Current.Profile;
profile.SetPropertyValue("FirstName", TextBox1.Text);
profile.SetPropertyValue("LastName",TextBox3.Text);
profile.SetPropertyValue("MiddleName", TextBox2.Text);
profile.SetPropertyValue("MobileNumber", TextBox4.Text);
profile.SetPropertyValue("TelephoneNumber", TextBox5.Text);
if (IsPostBack)
{
Boolean fileok = false;
String path = Server.MapPath("~/UploadedImages/");
path = System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase(path);
if (FileUpload1.HasFile)
{
String fileExtension = System.IO.Path.GetExtension(FileUpload1.FileName).ToLower();
String[] allowedextensions = { ".gif", ".png", ".jpeg", ".jpg" };
for (int i = 0; i < allowedextensions.Length; i++)
{
if (fileExtension == allowedextensions[i])
{
fileok = true;
}
}
}
if (fileok)
{
byte[] userImage = new byte[1025];
try
{
userImage = ReadFully(FileUpload1.PostedFile.InputStream);
}
catch (Exception ex)
{
//exception while getting the file
return;
}
profile.SetPropertyValue("ProfileImage", userImage);
}
else
{
//file not okay type not image
}
}
}
//-------------------------------------------------------------Get The File in Byte Stream ---------------------------------//
public static byte[] ReadFully(Stream input)
{
byte[] buffer = new byte[input.Length];
using (MemoryStream ms = new MemoryStream())
{
int read;
while ((read = input.Read(buffer, 0, buffer.Length)) > 0)
{
ms.Write(buffer, 0, read);
}
return ms.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
但是即使对于不能正确的34KB文件也正抛出以下异常?难道我做错了什么?
[SqlException (0x80131904): String or binary data would be truncated.
The statement has been terminated.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1767866
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5352418
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1691
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +269
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +1406
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +205
System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +160
System.Data.Mapping.Update.Internal.DynamicUpdateCommand.Execute(UpdateTranslator translator, EntityConnection connection, Dictionary`2 identifierValues, List`1 generatedValues) +535
System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) +262
[UpdateException: An error occurred while updating the entries. See the inner exception for details.]
System.Data.Mapping.Update.Internal.UpdateTranslator.Update(IEntityStateManager stateManager, IEntityAdapter adapter) +444
System.Data.EntityClient.EntityAdapter.Update(IEntityStateManager entityCache) +146
System.Data.Objects.ObjectContext.SaveChanges(SaveOptions options) +571
System.Web.Providers.DefaultProfileProvider.SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) +745
System.Configuration.SettingsBase.SaveCore() +389
System.Configuration.SettingsBase.Save() +114
System.Web.Profile.ProfileBase.SaveWithAssert() +31
System.Web.Profile.ProfileBase.Save() +72
System.Web.Profile.ProfileModule.OnLeave(Object source, EventArgs eventArgs) +9497686
System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69
Run Code Online (Sandbox Code Playgroud)
Dan*_*odi 17
检查您尝试将数据插入的数据库列.为数据定义的长度小于您尝试插入的长度.
例如,如果您尝试向定义为Firstname Varchar(50)的列插入一个值,并且该值的长度超过50,那么这将给出您提到的相同异常.
| 归档时间: |
|
| 查看次数: |
58532 次 |
| 最近记录: |