Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET核心应用程序是在Visual Basic.NET(VB.NET)中开发的,有可能吗?VS中没有模板_C#_Asp.net_.net_Asp.net Mvc_Vb.net - Fatal编程技术网

C# ASP.NET核心应用程序是在Visual Basic.NET(VB.NET)中开发的,有可能吗?VS中没有模板

C# ASP.NET核心应用程序是在Visual Basic.NET(VB.NET)中开发的,有可能吗?VS中没有模板,c#,asp.net,.net,asp.net-mvc,vb.net,C#,Asp.net,.net,Asp.net Mvc,Vb.net,VB.NET中不支持Razor页面。 Visual Studio 2019 for VB.NET中没有ASP.NET核心的模板 但是我喜欢这种语言 如何在VB.NET中开发ASP.NET核心(3.0或更高版本)网站或应用程序 现在看来,使用.NET内核在VB.NET中开发Web应用程序是不可能的 除了Razor/Blazor页面本身和Program.cs之外,您可以将所有内容都放在库项目中 下面是我在控制器项目中所做工作的一个示例。 首先,有一个基类,我用于所有/大多数控制器。如果需要,可以更改

VB.NET中不支持Razor页面。 Visual Studio 2019 for VB.NET中没有ASP.NET核心的模板

但是我喜欢这种语言

如何在VB.NET中开发ASP.NET核心(3.0或更高版本)网站或应用程序


现在看来,使用.NET内核在VB.NET中开发Web应用程序是不可能的

除了Razor/Blazor页面本身和Program.cs之外,您可以将所有内容都放在库项目中

下面是我在控制器项目中所做工作的一个示例。 首先,有一个基类,我用于所有/大多数控制器。如果需要,可以更改构造函数。取决于派生类使用的DI对象。 正如您所看到的,它与C#中的实现没有什么不同。 @Riaan:甚至身份框架的工作原理也和C#一样。我添加了一个带有授权的示例

Public MustInherit Class ControllerBase
    Inherits Microsoft.AspNetCore.Mvc.ControllerBase

    Private ReadOnly _configuration As IConfiguration
    Protected ReadOnly Property Configuration As IConfiguration
        Get
            Return _configuration
        End Get
    End Property

    Private ReadOnly _logger As ILogger(Of Object)
    Protected ReadOnly Property Logger As ILogger(Of Object)
        Get
            Return _logger
        End Get
    End Property

    Private ReadOnly _signInManager As SignInManager(Of Identity.MyProjectIdentity)
    Protected ReadOnly Property SignInManager As SignInManager(Of Identity.MyProjectIdentity)
        Get
            Return _signInManager
        End Get
    End Property

    Private ReadOnly _userManager As UserManager(Of Identity.MyProjectIdentity)
    Protected ReadOnly Property UserManager As UserManager(Of Identity.MyProjectIdentity)
        Get
            Return _userManager
        End Get
    End Property

    Public Sub New(ByVal configuration As IConfiguration,
                   ByVal logger As ILogger(Of Object),
                   ByVal signInManager As SignInManager(Of Identity.MyProjectIdentity),
                   ByVal userManager As UserManager(Of Identity.MyProjectIdentity))

        _configuration = configuration
        _logger = logger
        _signInManager = signInManager
        _userManager = userManager

    End Sub

End Class


<Controller()>
<Route("Media")>
Public Class MediaController
    Inherits MyProject.Controllers.ControllerBase

    Private ReadOnly _mediaService As MediaService
    Protected ReadOnly Property MediaService As MediaService
        Get
            Return _mediaService
        End Get
    End Property

    Public Sub New(ByVal configuration As IConfiguration,
                   ByVal signInManager As SignInManager(Of Identity.MyProjectIdentity),
                   ByVal userManager As UserManager(Of Identity.MyProjectIdentity),
                   ByVal logger As ILogger(Of MediaController),
                   ByVal mediaService As MediaService)
        MyBase.New(configuration, logger, signInManager, userManager)

        _mediaService = mediaService

    End Sub            


    <HttpGet("Placeholder/{width:int}/{height:int}")>
    Public Function Placeholder(ByVal width As Integer, ByVal height As Integer) As IActionResult

        Try

            Dim resultImage = Imaging.Placeholder.GetPlaceholderImage(300, 300)

            Dim ms = New IO.MemoryStream()
            resultImage.Save(ms, ImageFormat.Png)
            ms.Position = 0

            Return File(ms, "image/png", $"Placeholder_{width}x{height}.png")

        Catch ex As Exception

            Return StatusCode(500)

        End Try

    End Function


 <Authorize()>
    <HttpGet("AuthenticatorQRCode/{userName}/{sharedKey}")>
    Public Async Function AuthenticatorQRCode(ByVal userName As String, ByVal sharedKey As String) As Task(Of IActionResult)

        Try

            Dim user = Await UserManager.FindByIdAsync(Me.User.FindFirst(ClaimTypes.NameIdentifier).Value)

            If user.UserName <> userName Then
                Return StatusCode(403)
            End If

            Dim domain As String = Configuration.GetSection("Cookies").GetValue(Of String)("Domain")
            Dim qrCodeDataString As String = $"otpauth://totp/{domain}:{userName}?secret={sharedKey}&issuer={domain}&digits=6"

            Dim qrImage = Imaging.QRCode.GetQRCode(qrCodeDataString)

            Dim ms = New System.IO.MemoryStream()
            qrImage.Save(ms, ImageFormat.Png)
            ms.Position = 0

            Return File(ms, "image/png", "QRCode.png")

        Catch ex As Exception

            Return StatusCode(500)

        End Try

    End Function

End Class
Public必须继承类ControllerBase
继承Microsoft.AspNetCore.Mvc.ControllerBase
专用只读配置作为IConfiguration
受保护的只读属性配置为IConfiguration
得到
返回配置
结束
端属性
专用只读记录器作为ILogger(对象的)
受保护的只读属性记录器作为ILogger(对象的)
得到
返回记录器
结束
端属性
私有只读\u signInManager作为signInManager(标识为.MyProjectIdentity)
受保护的只读属性SignInManager作为SignInManager(标识为.MyProjectIdentity)
得到
返回\u签名管理器
结束
端属性
Private ReadOnly\u userManager作为userManager(Identity.MyProjectIdentity的)
受保护的只读属性UserManager作为UserManager(Identity.MyProjectIdentity的)
得到
返回\u用户管理器
结束
端属性
公共子新建(ByVal配置为IConfiguration,
ByVal记录器作为ILogger(对象的),
ByVal signInManager作为signInManager(身份.MyProjectIdentity的),
ByVal userManager作为userManager(Identity.MyProjectIdentity的))
_配置=配置
_记录器=记录器
_signInManager=signInManager
_userManager=userManager
端接头
末级
公共类媒体控制器
继承MyProject.Controllers.ControllerBase
专用只读mediaService作为mediaService
受保护的只读属性MediaService作为MediaService
得到
返回媒体服务
结束
端属性
公共子新建(ByVal配置为IConfiguration,
ByVal signInManager作为signInManager(身份.MyProjectIdentity的),
ByVal userManager作为userManager(Identity.MyProjectIdentity的),
ByVal记录器作为ILogger(MediaController的),
ByVal mediaService(作为mediaService)
新建(配置、记录器、signInManager、userManager)
_mediaService=mediaService
端接头
作为IActionResult的公共函数占位符(ByVal宽度为整数,ByVal高度为整数)
尝试
Dim resultImage=Imaging.Placeholder.getplaceholder图像(300300)
Dim ms=新IO.MemoryStream()
resultImage.Save(ms,ImageFormat.Png)
女士职位=0
返回文件(ms,“image/png”,$“占位符{width}x{height}.png”)
特例
返回状态代码(500)
结束尝试
端函数
公共异步函数AuthenticatorQRCode(ByVal用户名作为字符串,ByVal sharedKey作为字符串)作为任务(IActionResult)
尝试
Dim user=Await UserManager.FindByIdAsync(Me.user.FindFirst(ClaimTypes.NameIdentifier).Value)
如果是user.UserName,则
返回状态代码(403)
如果结束
Dim domain As String=Configuration.GetSection(“Cookies”).GetValue(字符串的)(“域”)
Dim qrCodeDataString作为字符串=$”otpauth://totp/{domain}:{userName}?secret={sharedKey}&issuer={domain}&digits=6“
Dim qrImage=Imaging.QRCode.GetQRCode(qrCodeDataString)
Dim ms=New System.IO.MemoryStream()
保存(ms,ImageFormat.Png)
女士职位=0
返回文件(ms,“image/png”,“QRCode.png”)
特例
返回状态代码(500)
结束尝试
端函数
末级

这个问题太宽泛了。使用特定的呈现引擎从来都不是ASP.NETMVC的要求-只要控制器返回能够呈现所需内容的操作,就可以了。您可能需要实现自己的操作来呈现HTML。。。或者环顾四周,看看是否有您喜欢的替代渲染引擎…我的问题是关于.NET Core的,Visual Studio中没有用于开发ASP.NET Core的模板。是的,这是一个ASP.NET Core 3.1项目中的VB.NET控制器类。我只是想知道您是否通过rest API获得了登录(用户凭据)来工作?如果你愿意,你是否愿意分享和以身作则?@Riaan:当然。我通过授权控制器操作对示例进行了一点扩展。感谢您的更新。这很有帮助,尤其是身份框架