为什么注册模块会禁用重写?

问题描述 投票:4回答:1

从web.config文件中删除我的MyModule模块后,rewrite按预期工作。将MyModule模块添加回web.config文件时,MyModule模块按预期工作,但不会发生rewrite

web.config中:

  <system.webServer>
    <rewrite>
      <rules>
        <rule name="rule_name" patternSyntax="ECMAScript" stopProcessing="true">
          <match url="(.*)" />
          <action type="Rewrite" url="http://localhost:7789/example/api/values" />
        </rule>
      </rules>
    </rewrite>
    <modules>
      <remove name="MyModule" />
      <add name="MyModule" type="My.Models.MyModule, Project1" />
    </modules>
    ...

RewriteModule.cs:

namespace My.Models
{
    public class MyModule: IHttpModule
    {
        public void Init(HttpApplication context)
        {
            context.BeginRequest += Context_BeginRequest;
        }
        public void Dispose()
        {

        }
        private void Context_BeginRequest(object sender, EventArgs e)
        {
            // something is written here....
        }
    }
}
c# asp.net
1个回答
0
投票

在web.config中 - 模块的name必须等于type(直到,中的type):

改变自:

<modules>
  <remove name="MyModule" />
  <add name="MyModule" type="My.Models.MyModule, Project1" />
</modules>

改成:

<modules>
  <remove name="My.Models.MyModule" />
  <add name="MyModule" type="My.Models.MyModule, Project1" />
</modules>
© www.soinside.com 2019 - 2024. All rights reserved.