爬了一下以前的相关贴子,回答不是不痛不痒就是半路结束.
这个问题很奇怪,我用VS.NET环境调试USERDATA是能取的,一切正常,后来我又在浏览器里打
http://localhost/web/ UserData也是能取得,但是打http://192.168.1.123/这个地址时就取不到了非常郁闷。我怀疑我哪里配置的不对,但是自己有检查不出来,我把相关代码贴上,请高手指点。Web.Config内容:<?xml version="1.0" encoding="utf-8" ?>
<configuration> <appSettings>
<add key="ConnectionString" value="server=127.0.0.1;uid=sa;pwd=******;database=DB" />
<add key="DataDynamicsARLic" value="DD,APN,10,C001511" />
</appSettings>
<system.web> <!-- 动态调试编译
设置 compilation debug="true" 以启用 ASPX 调试。否则,将此值设置为
false 将提高此应用程序的运行时性能。
设置 compilation debug="true" 以将调试符号(.pdb 信息)
插入到编译页中。因为这将创建执行起来
较慢的大文件,所以应该只在调试时将此值设置为 true,而在所有其他时候都设置为
false。有关更多信息,请参考有关
调试 ASP.NET 文件的文档。
-->
<compilation
defaultLanguage="c#"
debug="true"
/> <!-- 自定义错误信息
设置 customErrors mode="On" 或 "RemoteOnly" 以启用自定义错误信息,或设置为 "Off" 以禁用自定义错误信息。
为每个要处理的错误添加 <error> 标记。 "On" 始终显示自定义(友好的)信息。
"Off" 始终显示详细的 ASP.NET 错误信息。
"RemoteOnly" 只对不在本地 Web 服务器上运行的
用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便
不向远程客户端显示应用程序的详细信息。
-->
<customErrors
mode="RemoteOnly"
/> <!-- 身份验证
此节设置应用程序的身份验证策略。可能的模式是 "Windows"、
"Forms"、 "Passport" 和 "None" "None" 不执行身份验证。
"Windows" IIS 根据应用程序的设置执行身份验证
(基本、简要或集成 Windows)。在 IIS 中必须禁用匿名访问。
"Forms" 您为用户提供一个输入凭据的自定义窗体(Web 页),然后
在您的应用程序中验证他们的身份。用户凭据标记存储在 Cookie 中。
"Passport" 身份验证是通过 Microsoft 的集中身份验证服务执行的,
它为成员站点提供单独登录和核心配置文件服务。
-->
<authentication mode="Forms">
<forms name="******" loginUrl="Login.aspx" protection="All" timeout="2160000" path="/web/"/>
</authentication> <!-- 授权
此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
(未经身份验证的)用户。
--> <authorization>
<deny users="?" /> <!-- 允许所有用户 -->
<!-- <allow users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
<deny users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
-->
</authorization> <!-- 应用程序级别跟踪记录
应用程序级别跟踪为应用程序中的每一页启用跟踪日志输出。
设置 trace enabled="true" 可以启用应用程序跟踪记录。如果 pageOutput="true",则
在每一页的底部显示跟踪信息。否则,可以通过浏览 Web 应用程序
根目录中的 "trace.axd" 页来查看
应用程序跟踪日志。
-->
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/> <!-- 会话状态设置
默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
若要禁用 Cookie,请设置 sessionState cookieless="true"。
-->
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/> <!-- 全球化
此节设置应用程序的全球化设置。
-->
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
</system.web></configuration>
Login.aspx.cs相关代码:private void LoginBtn_Click(object sender, System.EventArgs e)
{
UserInfo user = BusinessFacade.User.SignIn(UserNameTbx.Text, PasswordTbx.Text);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, string.Empty));
if (user != null)
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, UserNameTbx.Text, DateTime.Now, DateTime.Now.AddDays(1), false, user.Group.GroupName, FormsAuthentication.FormsCookiePath);
string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
FormsAuthentication.RedirectFromLoginPage(UserNameTbx.Text,false);
}
else
{
StateLbl.Text = "您输入有误!";
}
}取UserData的代码:public static string CheckUser (HttpCookie cookies)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookies.Value);
string UserType = ticket.UserData;
//string UserType = ticket.Name;
return UserType;
}
这个问题很奇怪,我用VS.NET环境调试USERDATA是能取的,一切正常,后来我又在浏览器里打
http://localhost/web/ UserData也是能取得,但是打http://192.168.1.123/这个地址时就取不到了非常郁闷。我怀疑我哪里配置的不对,但是自己有检查不出来,我把相关代码贴上,请高手指点。Web.Config内容:<?xml version="1.0" encoding="utf-8" ?>
<configuration> <appSettings>
<add key="ConnectionString" value="server=127.0.0.1;uid=sa;pwd=******;database=DB" />
<add key="DataDynamicsARLic" value="DD,APN,10,C001511" />
</appSettings>
<system.web> <!-- 动态调试编译
设置 compilation debug="true" 以启用 ASPX 调试。否则,将此值设置为
false 将提高此应用程序的运行时性能。
设置 compilation debug="true" 以将调试符号(.pdb 信息)
插入到编译页中。因为这将创建执行起来
较慢的大文件,所以应该只在调试时将此值设置为 true,而在所有其他时候都设置为
false。有关更多信息,请参考有关
调试 ASP.NET 文件的文档。
-->
<compilation
defaultLanguage="c#"
debug="true"
/> <!-- 自定义错误信息
设置 customErrors mode="On" 或 "RemoteOnly" 以启用自定义错误信息,或设置为 "Off" 以禁用自定义错误信息。
为每个要处理的错误添加 <error> 标记。 "On" 始终显示自定义(友好的)信息。
"Off" 始终显示详细的 ASP.NET 错误信息。
"RemoteOnly" 只对不在本地 Web 服务器上运行的
用户显示自定义(友好的)信息。出于安全目的,建议使用此设置,以便
不向远程客户端显示应用程序的详细信息。
-->
<customErrors
mode="RemoteOnly"
/> <!-- 身份验证
此节设置应用程序的身份验证策略。可能的模式是 "Windows"、
"Forms"、 "Passport" 和 "None" "None" 不执行身份验证。
"Windows" IIS 根据应用程序的设置执行身份验证
(基本、简要或集成 Windows)。在 IIS 中必须禁用匿名访问。
"Forms" 您为用户提供一个输入凭据的自定义窗体(Web 页),然后
在您的应用程序中验证他们的身份。用户凭据标记存储在 Cookie 中。
"Passport" 身份验证是通过 Microsoft 的集中身份验证服务执行的,
它为成员站点提供单独登录和核心配置文件服务。
-->
<authentication mode="Forms">
<forms name="******" loginUrl="Login.aspx" protection="All" timeout="2160000" path="/web/"/>
</authentication> <!-- 授权
此节设置应用程序的授权策略。可以允许或拒绝不同的用户或角色访问
应用程序资源。通配符: "*" 表示任何人,"?" 表示匿名
(未经身份验证的)用户。
--> <authorization>
<deny users="?" /> <!-- 允许所有用户 -->
<!-- <allow users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
<deny users="[逗号分隔的用户列表]"
roles="[逗号分隔的角色列表]"/>
-->
</authorization> <!-- 应用程序级别跟踪记录
应用程序级别跟踪为应用程序中的每一页启用跟踪日志输出。
设置 trace enabled="true" 可以启用应用程序跟踪记录。如果 pageOutput="true",则
在每一页的底部显示跟踪信息。否则,可以通过浏览 Web 应用程序
根目录中的 "trace.axd" 页来查看
应用程序跟踪日志。
-->
<trace
enabled="false"
requestLimit="10"
pageOutput="false"
traceMode="SortByTime"
localOnly="true"
/> <!-- 会话状态设置
默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
若要禁用 Cookie,请设置 sessionState cookieless="true"。
-->
<sessionState
mode="InProc"
stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes"
cookieless="false"
timeout="20"
/> <!-- 全球化
此节设置应用程序的全球化设置。
-->
<globalization
requestEncoding="gb2312"
responseEncoding="gb2312"
/>
</system.web></configuration>
Login.aspx.cs相关代码:private void LoginBtn_Click(object sender, System.EventArgs e)
{
UserInfo user = BusinessFacade.User.SignIn(UserNameTbx.Text, PasswordTbx.Text);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, string.Empty));
if (user != null)
{
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, UserNameTbx.Text, DateTime.Now, DateTime.Now.AddDays(1), false, user.Group.GroupName, FormsAuthentication.FormsCookiePath);
string encTicket = FormsAuthentication.Encrypt(ticket);
Response.Cookies.Add(new HttpCookie(FormsAuthentication.FormsCookieName, encTicket));
FormsAuthentication.RedirectFromLoginPage(UserNameTbx.Text,false);
}
else
{
StateLbl.Text = "您输入有误!";
}
}取UserData的代码:public static string CheckUser (HttpCookie cookies)
{
FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(cookies.Value);
string UserType = ticket.UserData;
//string UserType = ticket.Name;
return UserType;
}
解决方案 »
- 我 我 再发个大帖子 不相信没有人解决
- 求高手解决?
- js 全屏问题
- Roles.GetUsersInRole 无法获取到用户所属的角色。
- DataGrid中的超级连接列能不能一口气传两个参数
- System.Configuration.ConfigurationManager.AppSettings("str")有可能是空值,如何判断?
- 关于利用网站管理工具创建用户的问题!!!急救!!!!!!
- 如何将数据库中的varbinary型数据转换成string格式
- 怎样实现Radiobuttionlist的不选!!请各位大虾帮忙
- 大哥、大姐们,快拔刀吧!
- C#数据类型的解决方法,求大哥看看????
- 使用 Smtp发送mail的时候出现下面错误.那位大哥给我看看.
把path改称"/"试试
这句话会自动写一个cookie,会把你前面写的cookie覆盖掉
既然你自己设置的cookie,就不要用这句话了