我正在尝试在我的global.aspx Application_Start方法中读取一些配置.当我读到ConfigurationManager.GetSection("system.web/httpHandlers")一切都很好:
ConfigurationManager.GetSection("system.web/httpHandlers"){System.Web.Configuration.HttpHandlersSection} base {System.Configuration.ConfigurationSection}:{System.Web.Configuration.HttpHandlersSection}处理程序:Count = 48
但是当我读ConfigurationManager.GetSection("system.webServer/handlers")(包含我的自定义处理程序,它返回null.我做错了什么?
该部分如下所示:
<system.webServer>
<handlers>
<add verb="*" path="*.loc" name="LocalizedResourceStreamer"
type="CFW.WebUI.HttpHandlers.LocalizedResourceStreamer,WebUI" />
</handlers>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
笔记:
ConfigurationManager.GetSection默认情况下将嵌套考虑在内.至今:
看起来像system.webServer被忽略了.
如何使用c#从asp.net中的sql数据库中检索图像.
我想从数据库中检索图像文件,然后在标签中显示图像.
我尝试这个代码,但它无法正常工作
<asp:Image ID="Image1" runat="server" ImageUrl="" Height="150px" Width="165px" />
Run Code Online (Sandbox Code Playgroud)
Byte[] bytes = (Byte[])ds.Tables[0].Rows[0]["image"];
Response.Buffer = true;
Response.Charset = "";
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.ContentType = "image/jpg";
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
Run Code Online (Sandbox Code Playgroud)
如何给出ImageUrl=""这个图像的链接???
目标:我在内存中有一个缩略图作为字节数组.一旦用户上传了他们的图像,我想在将其写入数据库之前将其显示在httphandler中.我已经使用此代码成功读取并显示数据库.但现在我想从会话中显示它:
Public Sub ProcessRequest(ByVal context As HttpContext) _
Implements IHttpHandler.ProcessRequest
Dim oPhotoMgt As New PhotoMgt
Dim intPhotoID As Int32 = context.Request.QueryString("id")
Dim oPhoto As New Photo
oPhoto = oPhotoMgt.GetPhotoByID(intPhotoID)
context.Response.ContentType = "image/jpeg"
context.Response.BinaryWrite(oPhoto.Bytes.ToArray())
End Sub
Run Code Online (Sandbox Code Playgroud) 我想根据MIME类型处理不同的请求.例如,我有PDF,图像和其他媒体文件,我想根据各自的MIME类型禁止访问.关于如何做到这一点的任何想法?谢谢您的帮助.
我还应该注意,访问Windows注册表不是我的应用程序的选项.
假设代码如下:
public class DynamicAspxHandler : IHttpHandler {
bool IHttpHandler.IsReusable { get { return false; } }
void IHttpHandler.ProcessRequest(HttpContext httpContext) {
string aspxContent = PlainASPXContent();
Page page = CreatePage(httpContext, aspxContent);
page.ProcessRequest(httpContext);
}
Page CreatePage(HttpContext context, string aspxContent) {
// How to implement this?
}
}
Run Code Online (Sandbox Code Playgroud)
如何实现CreatePage方法基于ASPX的纯字符串内容实例化页面?
注意,ASPX字符串本身可以包含对磁盘上已存在的MasterPage的引用.
我意识到这一点必然存在巨大的性能问题,但在这个阶段我只想知道如何做到这一点.显然我必须缓存结果.
谢谢.
我正在尝试创建一个HTTP处理程序来处理对文件夹的所有请求,但我只想在请求的文件不存在时触发它(EG:请求来自文件X,如果X存在我想要服务文件,否则处理程序应该处理它).
这些文件只是静态内容,而不是脚本本身,我认为它使它更容易但我似乎无法找到任何可以做到这一点的任何东西......任何人都有任何想法?我认为它可以完成,因为IIS7重写模块可以管理它,但我看不出如何...
编辑只是为了澄清......处理程序是典型的情况,它不是错误处理例程,而是实际提供适当的内容.我只是希望能够将新文件作为单独的东西添加到文件夹中,或者作为处理程序将提供的内容的重载.
我的网站有一个处理器(FileDownload.ashx),处理所有文件下载请求.
我最近将我的站点迁移到ASP.NET 4.0,现在它广泛使用路由.处理页面请求(aspx)时一切正常,但它不能与我的处理程序一起工作 - 我遇到以下错误:
类型'.Handlers.FileDownload'不从'System.Web.UI.Page'继承.
这是有道理的,因为路由仅在页面中实现.
我需要采取哪些步骤才能将路由和我的.ashx一起使用?我希望能够RouteData.Values从路线中提取.
public class FileDownload : IHttpHandler
{
}
Run Code Online (Sandbox Code Playgroud) 我正在使用Axis API访问Axis HTTP服务器.可以在此处找到API的文档.
我使用以下代码将处理程序添加到服务器.service是java.xml.rpc.Service类型
HandlerRegistry registry = service.getHandlerRegistry();
QName serviceName = new QName(url, "MyServiceClass");
List<HandlerInfo> handlerChain = new ArrayList<HandlerInfo>();
HandlerInfo handlerInfo = new HandlerInfo(MyHandler.class, null, null);
handlerChain.add(handlerInfo);
registry.setHandlerChain(serviceName, handlerChain);
Run Code Online (Sandbox Code Playgroud)
我知道服务名称是正确的,因为我在后续调用服务对象时获得了正确的输出.
不知何故,处理程序没有被调用.这是Handler类.我的目的是在将请求转发给服务器之前向HTTP请求添加自定义标头.
import javax.xml.namespace.QName;
import org.apache.axis.AxisFault;
import org.apache.axis.MessageContext;
import org.apache.axis.handlers.BasicHandler;
public class MyHandler extends BasicHandler {
@Override
public void init() {
System.out.println("init called");
super.init();
System.out.println("init called");
}
@Override
public void cleanup() {
super.cleanup();
System.out.println("cleanup called");
}
@Override
public void invoke(MessageContext mc) throws AxisFault …Run Code Online (Sandbox Code Playgroud) 我有一个cookie用于持久保存用户的用户ID,但是我很难用新值替换它.根据MSDN,我应该能够简单地覆盖该值,但它一直没有工作.我正在处理程序中执行登录逻辑,如果成功,则将用户传递到新网页.
public void ProcessRequest(HttpContext context)
{
User user = User.FindByUsernameAndPassword(
context.Request.Form["username"],
context.Request.Form["password"]);
context.Response.Cookies["user_id"].Value = user.ID.ToString();
context.Response.Redirect("/profile", true);
}
Run Code Online (Sandbox Code Playgroud)
我第一次登录它运行良好,但如果我尝试通过使用新的用户ID命中处理程序来覆盖我当前的cookie,它不会更改cookie值,我继续以我当时的用户身份登录我打了它.
其他页面使用cookie登录,但由于用户ID未更改,因此不会更改登录用户.
public User User { get; set; }
public override void Page_Load()
{
this.User = User.Find(int.Parse(Request.Cookies["user_id"].Value));
}
Run Code Online (Sandbox Code Playgroud) 我试图在Visual Studio 2012上创建我的异步HTTP处理程序.我花了大约10个小时来找出服务器为什么一直给我" HTTP错误500.23 - 内部服务器错误 "响应.我老了.
最后我发现如果我将Web服务器切换到Visual Studio Development Server.一切正常.当我切换回IIS Web服务器时,它不再起作用.我尝试使用IIS管理器进行一些配置.我只是不知道我应该做什么以及localhost如何链接到我的开发文件夹.没有关于它正在使用的端口及其映射文件夹的信息.
有人可以提供一些帮助吗?我该怎么做才能让IIS Web服务器为我工作?谢谢
httphandler ×10
asp.net ×7
c# ×5
.net ×2
iis ×2
ashx ×1
axis ×1
cookies ×1
http ×1
iis-7 ×1
java ×1
routes ×1
sql-server ×1
web-config ×1