小编Has*_*han的帖子

Web API Asp.Net 6 路由说明

我在我的项目中使用 Asp.net 6 Web API,我对理解路由功能感到困惑。以前,当我们构建 API 时,我们使用以下中间件

app.UseRouting()

...Other middleware

app.UseEndPoints()
Run Code Online (Sandbox Code Playgroud)

但现在在 Asp.Net 6 中默认使用这种方式

    app.UseAuthentication();
    app.UseAuthorization();

    app.MapControllers()
Run Code Online (Sandbox Code Playgroud)

无需使用app.UseRouting()app.UseEndPoints()而是在其他中间件之后直接使用app.MapControllers()

我想知道 app.MapControllers() 内部做了什么?是不是说所有的路由都是默认授权的?

在注册路由之前如何使用其他中间件?我对这些方法之间的理解有点困惑

app.UseRouting() VS app.UseEndpoints() VS app.MapControllers();
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc .net-core asp.net-core .net-6.0

9
推荐指数
2
解决办法
1万
查看次数

ASMX webservice - 返回JSON而不是XML

我有一个包含一种方法的Web服务:

[WebMethod]
public string Movies()
{
    using (var dataContext = new MovieCollectionDataContext())
    {
        var query = dataContext.Movies.Select(m =>new{m.Title,m.ReleaseDate}).Take(20);
        var serializer = new JavaScriptSerializer();
        return serializer.Serialize(query);
    }
}
Run Code Online (Sandbox Code Playgroud)

该方法正确地序列化了对象,但是当我在FireBug中查看响应时,它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">[{"Title":"SQL","ReleaseDate":"\/Date(1224007200000)\/"},{"Title":"Termonator Salvation","ReleaseDate":"\/Date(1224007200000)\/"}]</string>
Run Code Online (Sandbox Code Playgroud)

这是我使用Kendo Data Source的jQuery方法

$(function () {
    alert("Welcome To Kendo");
    var dataSource = new kendo.data.DataSource(
                {
                    transport: {
                        read: {
                            type: "POST",
                            dataType: "json",
                            url: "/MovieService.asmx/Movies"
                           // contentType: "application/json; charset=utf-8"

                        }
                    },
                    change: function (e) {
                        alert(e);

                    },
                    error: function (e) {
                        alert(e[2]);
                    },
                    pageSize: 10,
                    schema: …
Run Code Online (Sandbox Code Playgroud)

c# json web-services asmx javascriptserializer

6
推荐指数
1
解决办法
1万
查看次数

Docker Aspnet core 设置物理目录路径

我正在尝试在 docker 容器中运行 aspnet core 应用程序。我在物理文件提供程序方面遇到问题。

在我的应用程序startup.cs中,我使用以下代码作为物理文件提供程序并使用别名进行映射

  app.UseFileServer(new FileServerOptions
        {
            FileProvider = new PhysicalFileProvider("G:\\Work\\LMS\\lms-data"),
            RequestPath = new PathString("/lms-data"),
            EnableDirectoryBrowsing = false
        });
Run Code Online (Sandbox Code Playgroud)

现在我的docker文件是

FROM mcr.microsoft.com/dotnet/core/sdk:3.1 AS build
ENV ASPNETCORE_ENVIRONMENT=Development
ENV DOTNET_USE_POLLING_FILE_WATCHER=1
WORKDIR /app
EXPOSE 5000
EXPOSE 5001

COPY ["SharedKernal/SharedKernal.csproj", "SharedKernal/"]
COPY ["LMS.Entities/LMS.Entities.csproj", "LMS.Entities/"]
COPY ["LMS.Core/LMS.Core.csproj", "LMS.Core/"]
COPY ["LMS.Infrastructure/LMS.Infrastructure.csproj", "LMS.Infrastructure/"]
COPY ["LMS.Web/LMS.Web.csproj", "LMS.Web/"]

RUN dotnet restore "LMS.Web/LMS.Web.csproj"
RUN mkdir /lms-data

COPY . .
WORKDIR "/app/LMS.Web"

CMD [ "/bin/bash","-c","dotnet restore && dotnet watch run" ]
Run Code Online (Sandbox Code Playgroud)

我的 docker 撰写文件是:

version: "3.4"

services:
  lmsapp: …
Run Code Online (Sandbox Code Playgroud)

asp.net docker docker-compose asp.net-core

6
推荐指数
1
解决办法
1838
查看次数