私はいくつかのチュートリアルに従って仕事で働いていますが、何らかの理由でUIを表示することはできませんが、Swagger Jsonは作成されています。最後に見たチュートリアルは here です。
私のセットアップは次のとおりです。
Nugetパッケージ:Swashbuckle.AspNetCore(1.0.0)
ConfigureServices
メソッド:
services.AddSwaggerGen(options =>
{
options.SwaggerDoc("v1",
new Info
{
Title = "MediatR Example",
Version = "v1",
Description = "Trying out the MediatR library to simplify Request and Response logic.",
TermsOfService = "WTFPL",
Contact = new Contact
{
Email = "",
Name = "",
Url = "https://github.com/CubicleJockey/MediatR-Playground"
}
}
);
var xmlDocFile = Path.Combine(PlatformServices.Default.Application.ApplicationBasePath, @"MediatR-Messages.Api.xml");
options.IncludeXmlComments(xmlDocFile);
options.DescribeAllEnumsAsStrings();
});
Configure
メソッド:
app.UseMvcWithDefaultRoute();
// Enable middleware to serve generated Swagger as a JSON endpoint.
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS etc.), specifying the Swagger JSON endpoint
app.UseSwaggerUI(config =>
{
config.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs");
});
launchSettings.json
:
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"launchUrl": "swagger/",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
Swagger JSON URLを実行してアクセスすると、適切なJSONが生成されます。
{
"swagger":"2.0",
"info":{
"version":"v1",
"title":"MediatR Example",
"description":"Trying out the MediatR library to simplify Request and Response logic.",
"termsOfService":"WTFPL",
"contact":{
"name":"André Davis",
"url":"https://github.com/CubicleJockey/MediatR-Playground",
"email":"[email protected]"
}
},
"basePath":"/",
"paths":{
"/api/Addition":{
"get":{
"tags":[
"Addition"
],
"summary":"Get Methods that takes two numbers and gets the sum.",
"operationId":"ApiAdditionGet",
"consumes":[
],
"produces":[
"text/plain",
"application/json",
"text/json"
],
"parameters":[
{
"name":"left",
"in":"query",
"description":"Left hand side of the equation.",
"required":false,
"type":"integer",
"format":"int32"
},
{
"name":"right",
"in":"query",
"description":"Right hand side of the equation.",
"required":false,
"type":"integer",
"format":"int32"
}
],
"responses":{
"200":{
"description":"Success",
"schema":{
"$ref":"#/definitions/Task[AdditionResponse]"
}
}
}
}
}
},
"definitions":{
"Task[AdditionResponse]":{
"type":"object",
"properties":{
"result":{
"$ref":"#/definitions/AdditionResponse",
"readOnly":true
},
"id":{
"format":"int32",
"type":"integer",
"readOnly":true
},
"exception":{
"type":"object",
"readOnly":true
},
"status":{
"enum":[
"Created",
"WaitingForActivation",
"WaitingToRun",
"Running",
"WaitingForChildrenToComplete",
"RanToCompletion",
"Canceled",
"Faulted"
],
"type":"string",
"readOnly":true
},
"isCanceled":{
"type":"boolean",
"readOnly":true
},
"isCompleted":{
"type":"boolean",
"readOnly":true
},
"isCompletedSuccessfully":{
"type":"boolean",
"readOnly":true
},
"creationOptions":{
"enum":[
"None",
"PreferFairness",
"LongRunning",
"AttachedToParent",
"DenyChildAttach",
"HideScheduler",
"RunContinuationsAsynchronously"
],
"type":"string",
"readOnly":true
},
"asyncState":{
"type":"object",
"readOnly":true
},
"isFaulted":{
"type":"boolean",
"readOnly":true
}
}
},
"AdditionResponse":{
"type":"object",
"properties":{
"answer":{
"format":"int32",
"type":"integer",
"readOnly":true
},
"equation":{
"type":"string",
"readOnly":true
}
}
}
},
"securityDefinitions":{
}
}
デフォルトのSwagger UI URLにアクセスすると、404が表示されます。いくつかのバリエーションを試してみました。
上記はすべて404を返します。これらは、バージョンによっては以前に機能していました。私は何が欠けています。
私の完全なソースコードはGitHub here にあります。これはこの質問の分岐なので、コードは私の質問に一致します。
私にとってトリックは何でしたか:
IIS
で試しましたが、他のホスティングタイプでも動作します)Microsoft.AspNetCore.*
パッケージにはMicrosoft.AspNetCore.All
メタパッケージ-詳細については、 この投稿 を参照してください。Swashbuckle.AspNetCore
パッケージ(他のSwashbuckle.AspNetCore.*
パッケージが必要)プロジェクトファイルに次の2つのパッケージがあることを確認してください(動作させるには十分です)。
PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0"
PackageReference Include="Swashbuckle.AspNetCore" Version="1.0.0"
展開フォルダーに公開(またはファイルをコピーして展開)します。これで動作するはずです。
注:APIでモデル名を複製している場合、失敗する場合があります(この場合、ブラウザーで不明確なエラーが表示されます;)
コードをダウンロードしてテストした後、次のNuGetパッケージをプロジェクトに追加する必要があるようです。
Microsoft.AspNetCore.StaticFiles
これを行うには、NuGet Managerを使用するか、次の行を.csproj <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.StaticFiles" Version="2.0.0" />
ソース: https://github.com/domaindrivendev/Swashbuckle.AspNetCore/issues/438
.vs
フォルダーを削除してみてください。 ASP.NET Core 2.1にアップグレードした後、私のためにそれを修正しました
私は数時間同じ問題を抱えていましたが、Chrome(これは控えめで見逃しやすいと述べたテキスト)によって安全でないと見なされたポートを使用していました。 。
同じ問題があり、HttpMethodバインディングがありませんでした。
System.NotSupportedException:アクションにはSwagger 2.0の明示的なHttpMethodバインディングが必要です