By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,905 Members | 1,616 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,905 IT Pros & Developers. It's quick & easy.

Data Access Problem when importing custom file

P: n/a
Hi,

I have an aspx file that creates a custom class object and calls a
method which should return a DataSet. It throws a:

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: Request for the
permission of type System.Data.SqlClient.SqlClientPermission,
System.Data, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089 failed.

Error.

When the methods from DB.cs is included in the aspx file it works
ok!!!

What is the problem? And how can I resolve it so that I have code
seperationg.

Here are the files in more detail:

aspx page:
<%@ Import Namespace="DBAccess" %>
protected void Page_Load(Object Src, EventArgs E)
{
DB db = new DB();
DataSet ds = db.GetDataSet("spu_Marketer", "Marketer");

MyDataGrid.DataSource=ds.Tables["Marketer"].DefaultView;
MyDataGrid.DataBind();

AnotherDataGrid.DataSource=ds.Tables["Marketer"].DefaultView;
AnotherDataGrid.DataBind();

}

DB.cs

namespace DBAccess
{
/// <summary>
/// ADO.NET data access using the SQL Server Managed Provider.
/// </summary>
public class DB
{
// connection to data source
private SqlConnection con;

private void OpenCon()
{
if (con == null)
{
con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
con.Open();
}
}

public DataSet GetDataSet(string procName, string sString)
{
OpenCon();
SqlDataAdapter sdc = new SqlDataAdapter(procName, con);
sdc.SelectCommand.CommandType = CommandType.StoredProcedure;

DataSet ds = new DataSet();
sdc.Fill(ds, sString);

return ds;
}

}
}
Nov 17 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
Alex,

Are you using integrated security on the sql server?

If you gave the aspnet account (or another that the web site is running
under) access to the sql server and are using integrated security it is most
likely that the user account that you are calling this code from is
different and it doesn't have access.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
"Alex" <al**@hotpop.com> wrote in message
news:c5**************************@posting.google.c om...
Hi,

I have an aspx file that creates a custom class object and calls a
method which should return a DataSet. It throws a:

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: Request for the
permission of type System.Data.SqlClient.SqlClientPermission,
System.Data, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089 failed.

Error.

When the methods from DB.cs is included in the aspx file it works
ok!!!

What is the problem? And how can I resolve it so that I have code
seperationg.

Here are the files in more detail:

aspx page:
<%@ Import Namespace="DBAccess" %>
protected void Page_Load(Object Src, EventArgs E)
{
DB db = new DB();
DataSet ds = db.GetDataSet("spu_Marketer", "Marketer");

MyDataGrid.DataSource=ds.Tables["Marketer"].DefaultView;
MyDataGrid.DataBind();

AnotherDataGrid.DataSource=ds.Tables["Marketer"].DefaultView;
AnotherDataGrid.DataBind();

}

DB.cs

namespace DBAccess
{
/// <summary>
/// ADO.NET data access using the SQL Server Managed Provider.
/// </summary>
public class DB
{
// connection to data source
private SqlConnection con;

private void OpenCon()
{
if (con == null)
{
con = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]); con.Open();
}
}

public DataSet GetDataSet(string procName, string sString)
{
OpenCon();
SqlDataAdapter sdc = new SqlDataAdapter(procName, con);
sdc.SelectCommand.CommandType = CommandType.StoredProcedure;

DataSet ds = new DataSet();
sdc.Fill(ds, sString);

return ds;
}

}
}

Nov 17 '05 #2

P: n/a
Morning Justin,

Thanks for you post. I'm using a specific user/pwd for the DB as
defined in the connection string. For completeness here it is:
<appSettings>
<add key="ConnectionString"
value="server=SomeServer;database=XXX;uid=XXX;pwd= yy;Trusted_Connection=yes"
/>
</appSettings>
I defined a specific DB user which the asp should use. Remember that
if I take the two files and put the code into the aspx page it works.
Simply cutting and pasting the two methods, and calling the method
directly (not creating the DB object) works.

You are thinking that when I split them accross two files it's trying
to use my WINDOWS username/pass to access the DB? I will look into it.
Where would this setting be?

Do you think it would be better to use a codebehind page rather than
include an assembly? I would prefer an assembly as this is how it
should be!

Thank you kindly for you help.

Alex
"S. Justin Gengo" <sj*****@aboutfortunate.com> wrote in message news:<Ot*************@tk2msftngp13.phx.gbl>...
Alex,

Are you using integrated security on the sql server?

If you gave the aspnet account (or another that the web site is running
under) access to the sql server and are using integrated security it is most
likely that the user account that you are calling this code from is
different and it doesn't have access.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Nov 17 '05 #3

P: n/a
Alex,

Yes, I think it's trying to use your windows login.

For the assembly I would just hard code the connection string in the
connection object. I believe that will solve your problem.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
"Alex" <al**@hotpop.com> wrote in message
news:c5**************************@posting.google.c om...
Morning Justin,

Thanks for you post. I'm using a specific user/pwd for the DB as
defined in the connection string. For completeness here it is:
<appSettings>
<add key="ConnectionString"
value="server=SomeServer;database=XXX;uid=XXX;pwd= yy;Trusted_Connection=yes" />
</appSettings>
I defined a specific DB user which the asp should use. Remember that
if I take the two files and put the code into the aspx page it works.
Simply cutting and pasting the two methods, and calling the method
directly (not creating the DB object) works.

You are thinking that when I split them accross two files it's trying
to use my WINDOWS username/pass to access the DB? I will look into it.
Where would this setting be?

Do you think it would be better to use a codebehind page rather than
include an assembly? I would prefer an assembly as this is how it
should be!

Thank you kindly for you help.

Alex
"S. Justin Gengo" <sj*****@aboutfortunate.com> wrote in message

news:<Ot*************@tk2msftngp13.phx.gbl>...
Alex,

Are you using integrated security on the sql server?

If you gave the aspnet account (or another that the web site is running
under) access to the sql server and are using integrated security it is most likely that the user account that you are calling this code from is
different and it doesn't have access.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Nov 17 '05 #4

P: n/a
Hey,

I found what the problem was!
Ok, this is the set up I *had*. My project files resided on
\\server\myPersonalSpace

On the IIS box (different server) I had set up a Web Site poiting to
the folder on myPersonalSpace. I was invoking the file from DW which
has a site defined poiting to myPersonalSpace.

When I moved all the files from myPersonalSpace and dumped in the
folder in wwwroot, and re-defined the site in DW to point to this
folder. Everything worked.

It was the fact that the IIS server was running the files accross the
network that caused the problems. Now I have a nice set up with a
codebehind class, and a Database layer (dll in bin directory).

Works much better, but I do have another interesting problem.
marketerList.DataSource=data.GetList("spu_getMarke ters", "Marketer");
marketerList.DataBind();

GetList is your typical method that runs a stored proc. marketerList
is a dropdownlist containing names of marketers. The list is populated
first time it is loaded. When the page is posted back, my lists don't
get populated anymore.
Of course, it's not running the stored proc as I bypass it through

if(Page.IsPostBack)
{ //Do nothing }
else
{ GetList...}

I can't see why it's not preserving state between requests. I haven't
defined an "action" in the form tag. Any ideas?

Thanks a lot,
Alex

PS. I'll be sure to check out your code repository ;)
PSS. And i'll release what I write as well....assuming I get
permission....
http://www.alexpop.com -- The first ever website I wrote.
http://www.abridgegolf.com -- The last one I did.
Nov 17 '05 #5

P: n/a
Alex,

Great to hear that you solved it!

Repopulation not taking place is almost always due to viewstate not being
enabled (for the page, the placeholder a dynamic control is in, the dynamic
control itself, a regular control, a panel a regular control is in, etc.)

I suggest looking at all levels of viewstate you may have pertaining to this
particular control. It's probably disabled at some level.

About placing code in my repository: If you'd like to submit some to share
with others that would be great! Of course I'll give you credit for
anything included.

Sincerely,

--
S. Justin Gengo, MCP
Web Developer

Free code library at:
www.aboutfortunate.com

"Out of chaos comes order."
Nietzche
"Alex" <al**@hotpop.com> wrote in message
news:c5**************************@posting.google.c om...
Hey,

I found what the problem was!
Ok, this is the set up I *had*. My project files resided on
\\server\myPersonalSpace

On the IIS box (different server) I had set up a Web Site poiting to
the folder on myPersonalSpace. I was invoking the file from DW which
has a site defined poiting to myPersonalSpace.

When I moved all the files from myPersonalSpace and dumped in the
folder in wwwroot, and re-defined the site in DW to point to this
folder. Everything worked.

It was the fact that the IIS server was running the files accross the
network that caused the problems. Now I have a nice set up with a
codebehind class, and a Database layer (dll in bin directory).

Works much better, but I do have another interesting problem.
marketerList.DataSource=data.GetList("spu_getMarke ters", "Marketer");
marketerList.DataBind();

GetList is your typical method that runs a stored proc. marketerList
is a dropdownlist containing names of marketers. The list is populated
first time it is loaded. When the page is posted back, my lists don't
get populated anymore.
Of course, it's not running the stored proc as I bypass it through

if(Page.IsPostBack)
{ //Do nothing }
else
{ GetList...}

I can't see why it's not preserving state between requests. I haven't
defined an "action" in the form tag. Any ideas?

Thanks a lot,
Alex

PS. I'll be sure to check out your code repository ;)
PSS. And i'll release what I write as well....assuming I get
permission....
http://www.alexpop.com -- The first ever website I wrote.
http://www.abridgegolf.com -- The last one I did.

Nov 17 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.