【发布时间】:2024-05-02 00:15:02
【问题描述】:
我正在尝试在 Windows 10、IIS 10 上自学一个 IIS 处理程序。当然,我从一个教程开始
它已经很旧了,但我找不到比这更全面的东西了,而且信息集中在一个地方。
简单的类和函数是这样的:
using System;
using System.Web;
namespace IISHandler {
class MyHandler : IHttpHandler {
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context) {
DateTime dt;
String useUTC = context.Request.QueryString["utc"];
if (!String.IsNullOrEmpty(useUTC) &&
useUTC.Equals("true")) {
dt = DateTime.UtcNow;
} else {
dt = DateTime.Now;
}
context.Response.Write(
String.Format("<h1>{0}</h1>", dt.ToLongTimeString()));
}
}
}
我在 VS 2015 中创建了程序集,一切看起来都很好。直到我试图“部署”它。然后一切都崩溃了。
我已经挖了三天了。没有任何信息在一个地方。我将介绍我所做的。 首先,将 DLL 复制到 Web 应用程序的 /bin 文件夹中。没关系。
然后使用 IIS 管理器中的“添加模块”选项。好吧,在默认级别它给了我这个:
好的,我不会将此添加到大会。我想要的只是我的 Web 应用程序中的自定义处理程序。
接下来,仔细观察,我只将它添加到一个 Web 应用程序中。
教程说添加模块会发现它。好吧,那没有发生。我有一个似乎是“内置”的列表,但不是我从教程中创建的 DLL。
所以我手动输入了名称“IISHandler.MyHandler”,即命名空间(程序集)和类名。然后 IIS 管理器告诉我:
没有多少网络搜索给我任何线索如何处理它。
接下来,我决定深入研究 web.config 文件。当然,MS 页面会告诉您,您可以获得所有详细信息……在未来的某个时间。
(这是 2008 年发布的。但我对 MS doc 的期望如此之低,没有什么让我感到惊讶)
我确实设法在 web.config 上找到了一些其他资源。因此,在尝试获得 IIS XML 配置文件的硕士学位时,我已将注意力集中在以下文件内容上:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="MyTest" path="example.time" verb="*" resourceType="Unspecified"
modules="IISHandler.MyHandler" preCondition="integratedMode" />
</handlers>
</system.webServer>
</configuration>
这里要做的就是拦截一个页面请求“example.time”,按照教程中的C#原代码返回当前时间。
响应一直是这样的:
它不是告诉我它无法找到该模块,只是它很糟糕。但是对于微软,真正的问题是什么并不清楚。
我尝试(不成功)设置 module="IISHandler",尽管这没有意义,因为仍然需要知道要调用的类。我是对的,它仍然没有工作。
继续搜索,整个网络都有执行此命令的建议(这没有意义,因为“功能”已经通过控制面板添加了):
%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i
(告诉我在我的 IIS 8 上安装 .NET 4.5 只是 MS 的另一个缺陷)
我的 IIS 10 的添加/删除功能不显示 4.5 但它确实显示 4.8
这很重要吗?我不知道,也找不到任何文档。
我还确保 AppPool 设置为“集成”,并且此 Web 应用程序位于该池中
但我的选择只有 .NET 2.0 或 .NET 4.0...但添加/删除功能为我提供了 3.5,而不是 2.0?我的程序集是在 .NET 4.8 中构建的(我也在 4 中重试......不走运)。而且 IIS 10 下的 Add/Remove 中没有 4.0 作为选项。
2.0、3.5、4.0、4.5、4.8 的组合是什么??
但我的问题的真正核心是: 让 IIS 识别我的 C# 程序集并简单地处理一个简单的自定义处理程序的过程是什么?
我希望这是足够的信息,有人可以提供一些帮助。
TIA
-太空人斯科特
【问题讨论】:
-
@jdweng 这和这个问题有什么关系?
-
@jdweng 请在发布之前停下来考虑一下。清楚地解释相关性。
-
角色必须正确才能连接到服务器
-
@jdweng 但这与这个问题有什么关系?