Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# #C语言中的if预处理器#_C#_Asp.net - Fatal编程技术网

C# #C语言中的if预处理器#

C# #C语言中的if预处理器#,c#,asp.net,C#,Asp.net,我是C#/Asp.net世界的新手,最近我遇到了#if调试预处理器,但即使看了Stack Over flow和MSDN网站以及其他博客上的帖子,我也无法让它工作 我正在制作一个小网站。 我通过向解决方案添加一个新项目来实现一个数据层。 在数据层中,我检查传递给存储过程的参数 因此,目的是打印应用程序在调试模式下运行时传递的参数,而当应用程序在发布模式下运行时,不应显示参数 任何帮助都将不胜感激 谢谢 #define DEBUG using System; using System.Data;

我是C#/Asp.net世界的新手,最近我遇到了#if调试预处理器,但即使看了Stack Over flow和MSDN网站以及其他博客上的帖子,我也无法让它工作

我正在制作一个小网站。 我通过向解决方案添加一个新项目来实现一个数据层。 在数据层中,我检查传递给存储过程的参数

因此,目的是打印应用程序在调试模式下运行时传递的参数,而当应用程序在发布模式下运行时,不应显示参数

任何帮助都将不胜感激

谢谢

#define DEBUG

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using TestWebsite.DataLayer.BussinessObjects;
using Microsoft.Practices.EnterpriseLibrary.Data;
using Microsoft.Practices.EnterpriseLibrary.Data.Sql;
using System.Data.Common;

namespace TestWebsite.DataLayer  
{  
    public class StatesManager  
    {   
        public ICollection<States> getAll(States statesObj)  
        {  
            List<object> parameters = new List<object>();  
            List<States> scol = new List<States>();  
            try  
            {  
                parameters.Add(statesObj.State);
                parameters.Add(statesObj.Abbreviation);
                parameters.Add(statesObj.StartRowIndex);
                parameters.Add(statesObj.MaximumRowsCount);
                parameters.Add(statesObj.SortExpression);
                parameters.Add(statesObj.SortDirection);

#if DEBUG
                System.Web.HttpContext.Current.Response.Write("State =" + statesObj.State + ",<br/>");
                System.Web.HttpContext.Current.Response.Write("Abbreviation =" + statesObj.Abbreviation + ",<br/>");
                System.Web.HttpContext.Current.Response.Write("StartRowIndex =" + statesObj.StartRowIndex.ToString() + ",<br/>");
                System.Web.HttpContext.Current.Response.Write("MaximumRowsCount =" + statesObj.MaximumRowsCount.ToString() + ",<br/>");
                System.Web.HttpContext.Current.Response.Write("SortExpression =" + statesObj.SortExpression + ",<br/>");
                System.Web.HttpContext.Current.Response.Write("SortDirection =" + statesObj.SortDirection.ToString() + "<br/>");
#endif

                object[] paramArray = parameters.ToArray();

                SqlDatabase db = new SqlDatabase(ConnectionManager.ConnectionString);
                DbCommand dbCommand = db.GetStoredProcCommand("GetAllStates", paramArray);
                IDataReader reader = db.ExecuteReader(dbCommand);

                while (reader.Read())
                {
                    States sreader = new States();
                    sreader.State = (string)reader[reader.GetOrdinal("State")];
                    sreader.Abbreviation = (string)reader[reader.GetOrdinal("Abbreviation")];
                    sreader.IsActive = (bool)reader[reader.GetOrdinal("IsActive")];
                    sreader.RowNumber = (long)reader[reader.GetOrdinal("RowNo")];
                    sreader.StateID = (int)reader[reader.GetOrdinal("StateID")];

                    scol.Add(sreader);
                    sreader = null;
                }
                reader.Dispose();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally { parameters = null; }
            return scol;
        }  
    }  
} 
#定义调试
使用制度;
使用系统数据;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用TestWebsite.DataLayer.bussinesobjects;
使用Microsoft.Practices.EnterpriseLibrary.Data;
使用Microsoft.Practices.EnterpriseLibrary.Data.Sql;
使用System.Data.Common;
命名空间TestWebsite.DataLayer
{  
公共阶级政治家
{   
公共ICollection getAll(州)
{  
列表参数=新列表();
List scol=新列表();
尝试
{  
parameters.Add(statesObj.State);
参数.Add(statesObj.缩写);
parameters.Add(statesObj.StartRowIndex);
parameters.Add(statesObj.MaximumRowsCount);
parameters.Add(statesObj.SortExpression);
parameters.Add(statesObj.SortDirection);
#如果调试
System.Web.HttpContext.Current.Response.Write(“State=“+statesObj.State+”,
); System.Web.HttpContext.Current.Response.Write(“缩写=“+statesObj.缩写+”,
); System.Web.HttpContext.Current.Response.Write(“StartRowIndex=“+statesObj.StartRowIndex.ToString()+”,
); System.Web.HttpContext.Current.Response.Write(“MaximumRowsCount=“+statesObj.MaximumRowsCount.ToString()+”,
); System.Web.HttpContext.Current.Response.Write(“SortExpression=“+statesObj.SortExpression+”,
); System.Web.HttpContext.Current.Response.Write(“SortDirection=“+statesObj.SortDirection.ToString()+”
); #恩迪夫 object[]paramArray=parameters.ToArray(); SqlDatabase db=newsqldatabase(ConnectionManager.ConnectionString); DbCommand DbCommand=db.GetStoredProcCommand(“GetAllState”,paramArray); IDataReader reader=db.ExecuteReader(dbCommand); while(reader.Read()) { States sreader=新状态(); sreader.State=(字符串)reader[reader.GetOrdinal(“State”); sreader.缩写=(字符串)reader[reader.GetOrdinal(“缩写”); sreader.IsActive=(bool)reader[reader.GetOrdinal(“IsActive”); sreader.RowNumber=(长)读卡器[reader.GetOrdinal(“RowNo”); sreader.StateID=(int)reader[reader.GetOrdinal(“StateID”); 补充条款(sreader); sreader=null; } reader.Dispose(); } 捕获(例外情况除外) { 掷骰子; } 最后{parameters=null;} 返回scol; } } }
在解决方案资源管理器中右键单击项目,然后单击属性。 转到Build选项卡并从下拉列表中选择调试配置。 确保选中“定义调试常量”

对发布配置执行相同的操作,但确保未选中“definedebug常量”

这将确保所有

#if DEBUG
指令按照您的期望工作

编辑:
由于您使用的是网站项目,请进入system.web部分下的web.config文件,找到或添加节点。此属性将打开和关闭调试常量。

在解决方案资源管理器中的项目上单击鼠标右键,然后单击“属性”。 转到Build选项卡并从下拉列表中选择调试配置。 确保选中“定义调试常量”

对发布配置执行相同的操作,但确保未选中“definedebug常量”

这将确保所有

#if DEBUG
指令按照您的期望工作

编辑:
由于您使用的是网站项目,请进入system.web部分下的web.config文件,找到或添加节点。此属性将打开和关闭调试常量。

您可能正试图在ASPX页面中使用
#if

预处理器仅在C#source中受支持

相反,如果符合以下条件,则可以使用普通的

<% if (HttpContext.Current.IsDebuggingEnabled) { %>
    ...
<% } %>

...
此属性反映Web.config中是否存在

你也许会写作

<%
#if DEBUG %>
   ...
<%
#endif%>

...

(注意换行符),但我认为它不会起作用。

您可能正在尝试在ASPX页面中使用
#if

预处理器仅在C#source中受支持

相反,如果符合以下条件,则可以使用普通的

<% if (HttpContext.Current.IsDebuggingEnabled) { %>
    ...
<% } %>

...
此属性反映Web.config中是否存在

你也许会写作

<%
#if DEBUG %>
   ...
<%
#endif%>

...
(注意换行符),但我认为它不会起作用。

在ASP.NET标记中不能使用
#if
。如果使用代码隐藏,则可以在标记中执行以下操作:

<asp:PlaceHolder runat="server" ID="DebugOutput" EnableViewstate="false" Visible="false">
    <asp:Literal runat="server" ID="OutputValue" />
</asp:PlaceHolder>
您可以使用面板而不是占位符,但是面板有一个控件状态,即使viewstate被禁用,因此即使在发布代码中,您也会在viewstate中获得该面板的条目。

如果在ASP.NET标记中使用
。如果使用代码隐藏,则可以在标记中执行以下操作:

<asp:PlaceHolder runat="server" ID="DebugOutput" EnableViewstate="false" Visible="false">
    <asp:Literal runat="server" ID="OutputValue" />
</asp:PlaceHolder>
您可以使用面板而不是占位符,但面板具有控件状态,