gpt4 book ai didi

asp.net - Mono 和 IHttpHandler

转载 作者:行者123 更新时间:2023-12-04 17:12:08 29 4
gpt4 key购买 nike

我想使用 IHttpHandler 方法在 .Net-Project 中使用 XSP 或更好的 mod_mono。

我有以下类(class)(很简单:

public class Class1 : IHttpHandler
{
public bool IsReusable
{
get { return false; }
}

public void ProcessRequest(HttpContext context)
{
var result = "<h1>Yeah</h1>";
var bytes = Encoding.UTF8.GetBytes(result);

context.Response.Write(result);
}
}

以及以下 web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers accessPolicy="Read, Execute, Script">
<add name="Class" path="*" verb="*" type="IISHost.Class1" resourceType="Unspecified" preCondition="integratedMode" />
</handlers>
</system.webServer>
<system.web>
<compilation defaultLanguage="c#" />
</system.web>
</configuration>

它在 IIS 中运行良好。 http://127.0.0.1/test/kfdlsa返回“是的”

在 Apache 上的 XSP 或 mod_mono 中,我可以创建一个 index.aspx,它可以根据 .Net-Framework 完美地解析和执行,但似乎该处理程序不包含在 mod_mono-Framework 中。

是使用真正在 Mono 中实现的 IHttpHandler,还是应该使用另一种方法将所有请求收集到某个主机和/或虚拟目录。

最佳答案

HTTP 处理程序和模块在 Mono 中运行良好。

你的问题是你的 Web.config文件使用特定于 IIS 的“集成管道”模式的语法。此模式在 Apache/mod_mono 下不存在。因此,您必须使用旧语法(即“经典管道”模式的语法)并提供 <system.web/httpHandlers>部分,除了现有的 <system.webServer/handlers>部分。

看到这个Web.config例子 :

<?xml version="1.0"?>
<configuration>
<system.web>
<httpHandlers>
<add path="*.rss" verb="*" type="CedricBelin.Web.FeedHandler" />
</httpHandlers>
</system.web>

<system.webServer>
<handlers>
<add name="Feed" path="*.rss" verb="*" type="CedricBelin.Web.FeedHandler" />
</handlers>

<validation validateIntegratedModeConfiguration="false" />
</system.webServer>
</configuration>
<validation ...>标签非常重要:如果您忘记了它,IIS 会抛出错误并提示在集成管道上下文中使用了未经授权的部分。

下一步是指示 Apache 服务器将文件处理转移到 mod_mono,如下所示:
<VirtualHost *:80>
ServerName mono.localhost
DocumentRoot "/Library/WebServer/Documents/MonoTest"
AddType application/x-asp-net .rss
</VirtualHost>

AddType application/x-asp-net .rss是重要的。查看 path="*.rss" 之间的关系在 Web.config.rss这条线的延伸。
如果要处理所有扩展,如您的示例( path="*" ),则必须替换行 AddType application/x-asp-net .rss通过 ForceType application/x-asp-net .

关于asp.net - Mono 和 IHttpHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158665/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com