Tag: asp.net

如何正确使用ASP.NET FileUpload控件

我正在尝试在ASP.NET中使用FileUpload控件 这是我当前的命名空间设置: using System; using System.IO; using System.Collections.Generic; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; 在我的课堂上,我只是使用: FileUpload fileUpload = new FileUpload(); 但是,通常不属于FileUpload的属性似乎都不可用……例如.HasFile。 我试图在后面的代码中使用Button click方法,我注意到.HasFile的大多数用法都在前面的代码中,但是我的理解是这不应该重要。 有谁知道为什么?

以编程方式访问web.config的部分?

有没有办法访问web.config文件中的标签? 我想检查文件中的“ debug ”属性是否设置为“ true ”,但我似乎无法弄清楚如何做到这一点。 我已经尝试过使用WebConfigurationManager ,但这似乎不允许我进入部分。 更新: 我知道我可以轻松地像XML文档一样加载文件并使用XPath,但我希望框架中已经存在一些可以为我做这件事的东西。 似乎会有一些东西,因为已经有方法来获取应用程序设置和连接字符串。 我也尝试过以下几种方式使用WebConfigurationManager.GetSection()方法: WebConfigurationManager.GetSection(“compilation”)// Name of the tag in the file WebConfigurationManager.GetSection(“CompilationSection”) // Name of the class that I’d expect would be returned by this method WebConfigurationManager.GetSection(“system.web”) // Parent tag of the ‘compilation’ tag 所有上述方法都返回null 。 我假设有一种方法可以进入这个配置部分,因为有一个已经存在的类(’ CompilationSection ‘),我只是想不通如何得到它。

如何在asp.net中设置contol属性

非常简单和愚蠢的问题。 我有一个页面类 public partial class ProtectWayItem : System.Web.UI.UserControl { public int Count { get; set; } protected void Page_Load(object sender, EventArgs e) { Count = 10; } } 以及如何设置div id等于Count。 我的意思是: <div id='’ >

按钮点击回发后__EVENTTARGET为空

我在aspx页面上有一个按钮 我试图在后面的代码中获取事件目标和事件源,以便根据它进行一些validation。 我试过下面的代码。 string ctrlname = page.Request.Params.Get(“__EVENTTARGET”); string ctrlname = Request.Form[“__EVENTTARGET”]; string ctrlname = Request.Params[“__EVENTTARGET”]; 但以上所有都给了我空洞的价值观。 如何获得每次都引起回发的控件。 我上面做错了什么? 仅供参考:我已经尝试过本链接中提到的解决方案。 但它唯一的返回按钮文本对我来说。 我想要buttonID。

Asp.Net Routing – 显示完整的URL

我有一个域名“http://www.abc.com”。 我在这个域上部署了一个ASP.net MVC4应用程序。 我还在RouteConfig.cs中配置了默认路由,如下所示 routes.MapRoute( name: “Default”, url: “{controller}/{action}/{id}”, defaults: new { controller = “MyApp”, action = “Home”, id = UrlParameter.Optional } ); 以上映射确保任何试图访问“http://www.abc.com”的人自动显示“http://www.abc.com/MyApp/Home”页面 一切都按预期工作,但浏览器中的地址栏显示“http://www.abc.com”而不是“http://www.abc.com/MyApp/Home”。 有没有办法强制浏览器显示完整的URL,包括控制器和动作?

如何获取所有局部变量的转储?

发生exception时,如何转储所有本地和会话变量? 我正在考虑编写某种基于reflection的函数,该函数将询问调用函数并创建变量和值的转储。 我可以使用现有的库吗? UPDATE 在与同事交谈后,我被指向AOP或面向方面编程。 这就是我的理解……使用AOP,可以简单地用某些属性修饰方法和类。 然后,AOP框架在这些类和方法中或周围注入代码。 有两种不同的框架,一种是注入代码然后编译程序集,另一种是简单地使用reflection和陷阱你已经装饰的调用,并在运行时包装方法周围的代码。 我希望所有这些都有意义。 我将对此进行更多研究并发布我的方法。 多谢你们 …

我可以在隐藏的表单字段中放置ASP.Net会话ID吗?

我在ASP.Net网站上使用Yahoo Uploader,Yahoo UI Library的一部分,允许用户上传文件。 对于那些不熟悉的人,上传者通过使用Flash小程序来帮助我更好地控制FileOpen对话框。 我可以为文件类型指定filter,允许选择多个文件等。这很好,但它有以下记录的限制: 由于已知的Flash错误,在Windows中的Firefox中运行的上传器不会通过上传发送正确的cookie; 它不是发送Firefox cookie,而是为相应的域发送Internet Explorer的cookie。 作为解决方法,我们建议使用无cookie上传方法或将document.cookie附加到上传请求。 因此,如果用户使用的是Firefox,我就不能依赖Cookie来上传文件时保持会话。 我需要他们的会议,因为我需要知道他们是谁! 作为一种解决方法,我正在使用Application对象: Guid UploadID = Guid.NewGuid(); Application.Add(Guid.ToString(), User); 因此,我正在创建一个唯一的ID,并将其用作将Page.User对象存储在Application范围中的键。 上传文件时,我将该ID作为变量包含在POST中。 然后,在接受文件上传的处理程序中,我抓住User对象: IPrincipal User = (IPrincipal)Application[Request.Form[“uploadid”]]; 这实际上有效,但它有两个明显的缺点: 如果IIS,应用程序池,甚至只是应用程序在用户访问上载页面和实际上载文件之间重新启动,它们的“uploadid”将从应用程序范围中删除,并且上载失败,因为我无法对它们进行身份validation。 如果我扩展到Web场(可能甚至是Web园)场景,这将完全破坏。 我可能不会担心,除了我计划将来扩展这个应用程序。 有没有人有更好的方法? 有没有办法让我在POST变量中传递实际的ASP.Net会话ID,然后在另一端使用该ID来检索会话? 我知道我可以通过Session.SessionID获取会话ID,我知道如何使用YUI将其发布到下一页。 我不知道的是如何使用该SessionID从状态服务器获取会话。 是的,我正在使用状态服务器来存储会话,因此它们会持续应用程序/ IIS重新启动,并且可以在Web场方案中运行。

为什么我不能在两个使用StateServer的Web应用程序之间共享会话状态? 我错过了什么?

我无法使用Session StateServer获得两个相同的ASP.NET MVC应用程序来共享同一个Session。 我试图这样做的原因是我们最终将在3个需要共享相同状态的Web服务器上部署此应用程序。 我们需要使用StateServer,因为我们正在尝试最小化数据库对非数据相关存储的使用。 设置: 我已经将相同的代码库部署到http:// localhost / App1和http:// localhost / App2 两者都具有相同的Web.Config文件,具有以下内容: //stateConnectionString=”tcpip=192.168.1.52:42424″ /> // also doesn’t work 我用这个工具生成这些机器密钥 考试: 我将以下内容放入我的一个控制器中以测试它是否正常工作: ViewData[“mode”] = requestContext.HttpContext.Session.Mode.ToString(); string timestamp = DateTime.Now.ToString(); if (requestContext.HttpContext.Session[“timestamp”] == null) { requestContext.HttpContext.Session[“timestamp”] = timestamp; } ViewData[“timestamp”] = requestContext.HttpContext.Session[“timestamp”].ToString(); ViewData[“realtime”] = timestamp; 在视图中有这个: Mode: Time: real time: 结果: 对于这两个部署,当页面首次加载时,我可以看到模式是StateServer,时间戳设置为与实时值相同的时间。但是,如果这样做,只有第一页应该具有相同的时间实时价值。 第二个页面加载应该从StateServer读取,因为该时间戳值不再为null,并显示该时间值。 但相反,它再次显示实时价值。 刷新页面时,时间戳保持不变,实时值始终更新。 […]

如何识别Page_Load中的回发事件

我们有一些遗留代码需要在Page_Load中识别哪个事件导致了回发。 目前,这是通过检查这样的请求数据来实现的…… if(Request.Form [“__ EVENTTARGET”]!= null &&(Request.Form [“__ EVENTTARGET”]。IndexOf(“BaseGrid”)> -1 // BaseGrid事件(例如排序) || Request.Form [“btnSave”]!= null //保存按钮 如果有人重命名控件,这非常难看并且会中断。 有更好的方法吗? 重写每个页面以便它不需要在Page_Load中检查它当前不是一个选项。

“Membership.Provider必须是ExtendedMembershipProvider的实例”

我正在使用Microsoft Visual Studio express 2012 for web编写MVC4网站。 每当我在程序包管理器控制台中运行“Update-Database”时,都会发生以下exception: 要调用此方法,“Membership.Provider”属性必须是实例 “ExtendedMembershipProvider”。 这是我的种子方法: protected override void Seed(GNSystem.Models.DataContext context) { context.Forums.AddOrUpdate( new Forum { ForumName = “Hello” }, new Forum { ForumName = “World” }, new Forum { ForumName = “!” } ); context.UserProfiles.Add(new UserAccount { UserName = “Gilad”, EMail = “gilad.doom@gmail.com” }); WebSecurity.CreateUserAndAccount(“Gilad”, “123456”); WebSecurity.Login(“Gilad”, “123456”); context.Threads.AddOrUpdate( […]