【问题标题】:How to convert this C# code to VB, "context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });" [closed]如何将此 C# 代码转换为 VB,“context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });" [关闭]
【发布时间】:2015-03-26 21:47:23
【问题描述】:

考虑一下这个 C# 代码:

context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

当我使用 Telerik 的在线C# to VB converter 翻译以下代码时,我在这一行得到错误:

context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", New () {"*"})`

错误是:

无法解析响应

我的输入文件如下所示:

public class SimpleAuthorizationServerProvider : OAuthAuthorizationServerProvider
{
    public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
    {
        context.Validated();
    }

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
    {

        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

        using (AuthRepository _repo = new AuthRepository())
        {
            IdentityUser user = await _repo.FindUser(context.UserName, context.Password);

            if (user == null)
            {
                context.SetError("invalid_grant", "The user name or password is incorrect.");
                return;
            }
        }

        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim("sub", context.UserName));
        identity.AddClaim(new Claim("role", "user"));

        context.Validated(identity);

    }
}

这意味着:

Public Class SimpleAuthorizationServerProvider
    Inherits OAuthAuthorizationServerProvider
    Public Overrides Function ValidateClientAuthentication(context As OAuthValidateClientAuthenticationContext) As Task
        context.Validated()
    End Function

    Public Overrides Function GrantResourceOwnerCredentials(context As OAuthGrantResourceOwnerCredentialsContext) As Task

        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", New () {"*"})

        Using _repo As New AuthRepository()
            Dim user As IdentityUser = Await _repo.FindUser(context.UserName, context.Password)

            If user Is Nothing Then
                context.SetError("invalid_grant", "The user name or password is incorrect.")
                Return
            End If
        End Using

        Dim identity = New ClaimsIdentity(context.Options.AuthenticationType)
        identity.AddClaim(New Claim("sub", context.UserName))
        identity.AddClaim(New Claim("role", "user"))

        context.Validated(identity)

    End Function
End Class

如何更正翻译以使生成的 Visual Basic 代码正常工作?

【问题讨论】:

  • 你的问题是什么??

标签: c# .net vb.net


【解决方案1】:

那句话的翻译似乎不正确,应该是

context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", { "*" })

没有 New()

【讨论】:

  • 我已经尝试过了,但是我认为对象参数应该是一个 {*} 数组,如果我错了,请纠正我并感谢您的回答
  • @Xvegas {""} 创建一个包含单个元素 ("") 的字符串数组。
  • 我是一个 c# 人,但如果我正确理解这一点 (stackoverflow.com/questions/3799403/…),那么在 VB.net 中 {..} 创建一个匿名类型,并且该数组隐含相当于 c# 中的 new[] { ... }。反正我觉得
猜你喜欢
  • 1970-01-01
  • 2012-08-12
  • 2017-06-15
  • 2016-09-30
  • 2015-06-17
  • 1970-01-01
  • 2012-11-22
  • 2017-12-29
  • 2019-02-07
相关资源
最近更新 更多