我有一个基于框架3.5构建的ASP.Net Web应用程序在本地iis上运行良好,但是当我将它部署到GoDaddy时,我开始获得安全性,除非是。完整的例外是低于生产服务器上的ASP.Net安全异常
Server Error in '/' Application.
--------------------------------------------------------------------------------
Security Exception Description: The application attempted to perform an
operation not allowed by the security policy. To grant this application
the required permission please contact your system administrator
or change the application's trust level in the configuration file.
Exception Details:
System.Security.SecurityException:
System.Security.Permissions.SecurityPermission
Source Error:
[No relevant source lines]
Source File: App_Web_xymjrvu2.0.cs Line: 0
Stack Trace:
[SecurityException: System.Security.Permissions.SecurityPermission]
PourNavi.Web.Core.DbHelper.Dispose(Boolean disposing) +0
PourNavi.Web.Core.DbHelper.Dispose() +44
PourNavi.Web.Core.MessageDataObjects.GetMessagesInfoForUserFromManager() +170
PourNavi.Web.Core.MessagingManager.GetMessagesInfoForUserFromManager() +31
PourNavi.Web.UI.UserControl.ucMessages.BindMessages() +41
PourNavi.Web.UI.UserControl.ucMessages.Page_Load(Object sender, EventArgs e) +67
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +99
System.Web.UI.Control.LoadRecursive() +50
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +6785
System.Web.UI.Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +242
System.Web.UI.Page.ProcessRequest() +80
System.Web.UI.Page.ProcessRequestWithNoAssert(HttpContext context) +21
System.Web.UI.Page.ProcessRequest(HttpContext context) +49
ASP.login_aspx.ProcessRequest(HttpContext context) in App_Web_xymjrvu2.0.cs:0
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +181
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75
我通过对SO,但没有帮助各种类似的问题了...
[更新时间:DbHelper.cs的代码]
internal class DbHelper : IDisposable
{
// Fields
private readonly Component _component;
private SqlConnection _connection;
private bool _disposed;
private IntPtr _handle;
// Methods
public DbHelper()
{
this._component = new Component();
this.OpenConnection();
}
public DbHelper(IntPtr handle)
{
this._component = new Component();
this._handle = handle;
}
private void CloseConnection()
{
try
{
if (this._connection.State == ConnectionState.Open)
{
this._connection.Close();
}
}
finally
{
this._connection.Dispose();
}
}
[DllImport("Kernel32")]
private static extern bool CloseHandle(IntPtr handle);
public void Dispose()
{
this.CloseConnection();
this.Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!this._disposed)
{
if (disposing)
{
this._component.Dispose();
}
CloseHandle(this._handle);
this._handle = IntPtr.Zero;
this._disposed = true;
}
}
public int ExecuteNonQuery(string commandText, CommandType commandType)
{
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
return command.ExecuteNonQuery();
}
}
public int ExecuteNonQuery(string commandText, CommandType commandType, SqlParameter parameter)
{
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.Add(parameter);
return command.ExecuteNonQuery();
}
}
public int ExecuteNonQuery(string commandText, CommandType commandType, SqlParameter[] parameters)
{
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.AddRange(parameters);
return command.ExecuteNonQuery();
}
}
public object ExecuteScalar(string commandText, CommandType commandType)
{
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
return command.ExecuteScalar();
}
}
public object ExecuteScalar(string commandText, CommandType commandType, SqlParameter parameter)
{
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.Add(parameter);
return command.ExecuteScalar();
}
}
public object ExecuteScalar(string commandText, CommandType commandType, SqlParameter[] parameters)
{
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.AddRange(parameters);
return command.ExecuteScalar();
}
}
public DataTable ExecuteSelect(string commandText, CommandType commandType)
{
DataTable table = new DataTable();
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader != null)
{
table.Load(reader);
}
}
}
return table;
}
public DataTable ExecuteSelect(string commandText, CommandType commandType, SqlParameter[] parameters)
{
DataTable table = new DataTable();
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.AddRange(parameters);
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader != null)
{
table.Load(reader);
}
}
}
return table;
}
public DataTable ExecuteSelect(string commandText, CommandType commandType, SqlParameter parameter)
{
DataTable table = new DataTable();
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.Add(parameter);
using (SqlDataReader reader = command.ExecuteReader())
{
if (reader != null)
{
table.Load(reader);
}
}
}
return table;
}
public DataSet ExecuteSelectDataSet(string commandText, CommandType commandType)
{
DataSet dataSet = new DataSet();
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
adapter.Fill(dataSet);
}
}
return dataSet;
}
public DataSet ExecuteSelectDataSet(string commandText, CommandType commandType, SqlParameter[] parameters)
{
DataSet dataSet = new DataSet();
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.AddRange(parameters);
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
adapter.Fill(dataSet);
}
}
return dataSet;
}
public DataSet ExecuteSelectDataSet(string commandText, CommandType commandType, SqlParameter parameter)
{
DataSet dataSet = new DataSet();
using (SqlCommand command = new SqlCommand(commandText, this._connection))
{
command.CommandType = commandType;
command.Parameters.Add(parameter);
using (SqlDataAdapter adapter = new SqlDataAdapter(command))
{
adapter.Fill(dataSet);
}
}
return dataSet;
}
~DbHelper()
{
this.Dispose(false);
}
private void OpenConnection()
{
try
{
this._connection = new SqlConnection(ConnectionString);
if (this._connection.State == ConnectionState.Open)
{
this._connection.Close();
}
this._connection.Open();
}
catch
{
throw new Exception("An error occured while communicating to sql server database.");
}
}
// Properties
private static string ConnectionString
{
get
{
return ConfigurationManager.ConnectionStrings["PourNavi.DigitalPrinting"].ConnectionString;
}
}
}
我是否需要从我的代码中删除东西。请帮我..
【解析】
谢谢你们的鼎力支持,我解决了这个问题。 DllImport是根源,因为我是inporting Kernel32 ....
这种方法的代码是干什么的? PourNavi.Web.Core.DbHelper.Dispose(布尔处理) – Paddy 2011-02-28 10:30:35
这是我的数据库辅助类DbHelper。客户需要在登录页面显示有未读消息的员工,这样办公室的每个人都会意识到这个人从管理员那里得到了一些邮件,但还没有阅读。 – 2011-02-28 10:45:39
PourNavi.Web.Core.MessageDataObjects.GetMessagesInfoForUserFromManager()170 PourNavi.Web.Core.MessagingManager.GetMessagesInfoForUserFromManager()31个 PourNavi.Web.UI.UserControl.ucMessages.BindMessages()41 PourNavi.Web.UI .UserControl.ucMessages.Page_Load(Object sender,EventArgs e)+67页面加载事件我绑定这样的用户。在dbhelper类中,在它的调用者调用中,我打开连接和默认的析构函数调用,连接被处置。我在内部使用语句实现DbHelper,这就是为什么我需要Idisposable接口。 – 2011-02-28 10:47:30