我在我的项目中使用 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) 我有一个包含一种方法的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) 我正在尝试在 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-core ×2
c# ×2
.net-6.0 ×1
.net-core ×1
asmx ×1
asp.net ×1
asp.net-mvc ×1
docker ×1
json ×1
web-services ×1