【问题标题】:Option Strict On does not allow narrowing in implicit type conversions between method and delegateOption Strict On 不允许缩小方法和委托之间的隐式类型转换
【发布时间】:2023-04-03 04:42:01
【问题描述】:

错误:Option Strict On 不允许缩小方法 'context_beginRequest<ByVal sender As Object, ByVal e As WindowsAuthenticationEventArgs>' 和委托 '<BeginRequest>' 之间的隐式类型转换

代码:

Public Sub Init(ByVal context As System.Web.HttpApplication) Implements System.Web.IHttpModule.Init
    'context.
    AddHandler context.BeginRequest, New EventHandler(AddressOf context_BeginRequest)
End Sub

context_BeginRequest 函数::

Public Sub context_BeginRequest(ByVal sender As Object, ByVal e As WindowsAuthenticationEventArgs)
.....

..... 结束子

【问题讨论】:

    标签: vb.net ihttpmodule


    【解决方案1】:

    这是因为HttpApplication.BeginRequest 只是EventHandler 类型...所以你的第二个参数应该是EventArgs 类型,而不是WindowsAuthenticationEventArgs

    【讨论】:

    • 感谢 Jon... 但我想在方法 context_BeginRequest 中使用 Identity 来检查 System.EventArgs 中不存在的身份验证。有什么建议如何进行吗?
    • 嗯,你可以使用EventArgs 作为参数类型,如果值实际上是WindowsAuthenticationEventArgs,则查看,但如果我是你,我不会依赖它.你不能仅仅因为你想要它就告诉事件发起者给你额外的信息。 (老实说,我什至不希望出现身份验证信息......)
    • 非常感谢您的建议。但我的问题是我正在将我的应用程序从 2.0 迁移到 4.5。在 4.5 中,不支持 global.asax 中存在的 WindowsAuthentication_OnAuthenticate。所以我创建的 HttpModule 页面将处理事件和身份验证。所以在 global.asax 中,Application_Start 方法可以调用 httpmodule 的 begin_request 事件并完成认证。这就是我想要做的......你能建议我吗?寻求帮助,我正在使用此链接 -stackoverflow.com/questions/19541114/…
    • @user2323566:我真的不知道,我只是回答了为什么代码没有编译的问题......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多