https://github.com/domaindrivendev/Swashbuckle

 

We really have little knowledge of the tool – it’s not part of our toolset.

 

 

 

From: <[email protected]> on behalf of Michal Carmeli 
<[email protected]>
Reply-To: "[email protected]" 
<[email protected]>
Date: Thursday, 4 August 2016 at 03:21
To: Swagger <[email protected]>
Subject: Re: I try to add Odata Controllers (I Succeed to add API controllers). 
But I always get this error.

 

Thanks If you need any thing else I will add it to here. Where can I find this 
tool? 

 

Any way this is my Swagger config file:

 

using System.Web.Http;

using WebActivatorEx;

using ThirdPartyWebAPI;

using Swashbuckle.Application;

using Swashbuckle.OData;

using System;

using System.IO;

using System.Reflection;

using ThirdPartyWebAPI.App_Start;

using Swashbuckle.Swagger;

using System.Web.Http.Description;

using System.Collections.Generic;

using System.Linq;

using System.Web.Http.Controllers;

 

[assembly: PreApplicationStartMethod(typeof(SwaggerConfig), "Register")]

 

namespace ThirdPartyWebAPI

{

    public class SwaggerConfig

    {

        public static void Register()

        {

            var thisAssembly = typeof(SwaggerConfig).Assembly;

 

            GlobalConfiguration.Configuration 

                .EnableSwagger(c =>

                    {

                        // By default, the service root url is inferred from 
the request used to access the docs.

                        // However, there may be situations (e.g. proxy and 
load-balanced environments) where this does not

                        // resolve correctly. You can workaround this by 
providing your own code to determine the root URL.

                        //

                        //c.RootUrl(req => GetRootUrlFromAppConfig());

 

                        // If schemes are not explicitly provided in a Swagger 
2.0 document, then the scheme used to access

                        // the docs is taken as the default. If your API 
supports multiple schemes and you want to be explicit

                        // about them, you can use the "Schemes" option as 
shown below.

                        //

                        //c.Schemes(new[] { "http", "https" });

 

                        // Use "SingleApiVersion" to describe a single version 
API. Swagger 2.0 includes an "Info" object to

                        // hold additional metadata for an API. Version and 
title are required but you can also provide

                        // additional fields by chaining methods off 
SingleApiVersion.

                        //

                        c.SingleApiVersion("v1", "ThirdPartyWebAPI");

                        c.CustomProvider(defaultProvider => new 
ODataSwaggerProvider(defaultProvider, c).Configure(odataConfig =>

                        {

                                 odataConfig.IncludeNavigationProperties();

                        }));

 

 

                        // If your API has multiple versions, use 
"MultipleApiVersions" instead of "SingleApiVersion".

                        // In this case, you must provide a lambda that tells 
Swashbuckle which actions should be

                        // included in the docs for a given API version. Like 
"SingleApiVersion", each call to "Version"

                        // returns an "Info" builder so you can provide 
additional metadata per API version.

                        //

                        //c.MultipleApiVersions(

                        //    (apiDesc, targetApiVersion) => 
ResolveVersionSupportByRouteConstraint(apiDesc, targetApiVersion),

                        //    (vc) =>

                        //    {

                        //        vc.Version("v2", "Swashbuckle Dummy API V2");

                        //        vc.Version("v1", "Swashbuckle Dummy API V1");

                        //    });

 

                        // You can use "BasicAuth", "ApiKey" or "OAuth2" 
options to describe security schemes for the API.

                        // See 
https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md for 
more details.

                        // NOTE: These only define the schemes and need to be 
coupled with a corresponding "security" property

                        // at the document or operation level to indicate which 
schemes are required for an operation. To do this,

                        // you'll need to implement a custom IDocumentFilter 
and/or IOperationFilter to set these properties

                        // according to your specific authorization 
implementation

                        //

                        //c.BasicAuth("basic")

                        //    .Description("Basic HTTP Authentication");

                        //

                        //c.ApiKey("apiKey")

                        //    .Description("API Key Authentication")

                        //    .Name("apiKey")

                        //    .In("header");

                        //

                        //c.OAuth2("oauth2")

                        //    .Description("OAuth2 Implicit Grant")

                        //    .Flow("implicit")

                        //    
.AuthorizationUrl("http://petstore.swagger.wordnik.com/api/oauth/dialog";)

                        //    //.TokenUrl("https://tempuri.org/token";)

                        //    .Scopes(scopes =>

                        //    {

                        //        scopes.Add("read", "Read access to protected 
resources");

                        //        scopes.Add("write", "Write access to 
protected resources");

                        //    });

 

                        // Set this flag to omit descriptions for any actions 
decorated with the Obsolete attribute

                        //c.IgnoreObsoleteActions();

 

                        // Each operation be assigned one or more tags which 
are then used by consumers for various reasons.

                        // For example, the swagger-ui groups operations 
according to the first tag of each operation.

                        // By default, this will be controller name but you can 
use the "GroupActionsBy" option to

                        // override with any value.

                        //

                        //c.GroupActionsBy(apiDesc => 
apiDesc.HttpMethod.ToString());

 

                        // You can also specify a custom sort order for groups 
(as defined by "GroupActionsBy") to dictate

                        // the order in which operations are listed. For 
example, if the default grouping is in place

                        // (controller name) and you specify a descending 
alphabetic sort order, then actions from a

                        // ProductsController will be listed before those from 
a CustomersController. This is typically

                        // used to customize the order of groupings in the 
swagger-ui.

                        //

                        //c.OrderActionGroupsBy(new 
DescendingAlphabeticComparer());

 

                        // If you annotate Controllers and API Types with

                        // Xml comments 
(http://msdn.microsoft.com/en-us/library/b2s063f7(v=vs.110).aspx), you can 
incorporate

                        // those comments into the generated docs and UI. You 
can enable this by providing the path to one or

                        // more Xml comment files.

                        //

                        var baseDirectory = 
AppDomain.CurrentDomain.BaseDirectory;

                        var commentsFileName = 
Assembly.GetExecutingAssembly().GetName().Name + ".XML";

                        var commentsFile = Path.Combine(baseDirectory, "bin", 
commentsFileName);

                        c.IncludeXmlComments(commentsFile);

 

                        // Swashbuckle makes a best attempt at generating 
Swagger compliant JSON schemas for the various types

                        // exposed in your API. However, there may be occasions 
when more control of the output is needed.

                        // This is supported through the "MapType" and 
"SchemaFilter" options:

                        //

                        // Use the "MapType" option to override the Schema 
generation for a specific type.

                        // It should be noted that the resulting Schema will be 
placed "inline" for any applicable Operations.

                        // While Swagger 2.0 supports inline definitions for 
"all" Schema types, the swagger-ui tool does not.

                        // It expects "complex" Schemas to be defined 
separately and referenced. For this reason, you should only

                        // use the "MapType" option when the resulting Schema 
is a primitive or array type. If you need to alter a

                        // complex Schema, use a Schema filter.

                        //

                        //c.MapType<ProductType>(() => new Schema { type = 
"integer", format = "int32" });

 

                        // If you want to post-modify "complex" Schemas once 
they've been generated, across the board or for a

                        // specific type, you can wire up one or more Schema 
filters.

                        //

                        //c.SchemaFilter<ApplySchemaVendorExtensions>();

 

                        // In a Swagger 2.0 document, complex types are 
typically declared globally and referenced by unique

                        // Schema Id. By default, Swashbuckle does NOT use the 
full type name in Schema Ids. In most cases, this

                        // works well because it prevents the "implementation 
detail" of type namespaces from leaking into your

                        // Swagger docs and UI. However, if you have multiple 
types in your API with the same class name, you'll

                        // need to opt out of this behavior to avoid Schema Id 
conflicts.

                        //

                        //c.UseFullTypeNameInSchemaIds();

 

                        // Alternatively, you can provide your own custom 
strategy for inferring SchemaId's for

                        // describing "complex" types in your API.

                        //  

                        //c.SchemaId(t => t.FullName.Contains('`') ? 
t.FullName.Substring(0, t.FullName.IndexOf('`')) : t.FullName);

 

                        // Set this flag to omit schema property descriptions 
for any type properties decorated with the

                        // Obsolete attribute 

                        c.IgnoreObsoleteProperties();

                        //c.OperationFilter<AddDefaultValues>();

                        // In accordance with the built in JsonSerializer, 
Swashbuckle will, by default, describe enums as integers.

                        // You can change the serializer behavior by 
configuring the StringToEnumConverter globally or for a given

                        // enum type. Swashbuckle will honor this change 
out-of-the-box. However, if you use a different

                        // approach to serialize enums as strings, you can also 
force Swashbuckle to describe them as strings.

                        // 

                        c.DescribeAllEnumsAsStrings();

 

                        // Similar to Schema filters, Swashbuckle also supports 
Operation and Document filters:

                        //

                        // Post-modify Operation descriptions once they've been 
generated by wiring up one or more

                        // Operation filters.

                        //

                        //c.OperationFilter<AddDefaultResponse>();

                        //

                        // If you've defined an OAuth2 flow as described above, 
you could use a custom filter

                        // to inspect some attribute on each action and infer 
which (if any) OAuth2 scopes are required

                        // to execute the operation

                        //

                        //c.OperationFilter<AssignOAuth2SecurityRequirements>();

 

                        // Post-modify the entire Swagger document by wiring up 
one or more Document filters.

                        // This gives full control to modify the final 
SwaggerDocument. You should have a good understanding of

                        // the Swagger 2.0 spec. - 
https://github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md

                        // before using this option.

                        //

                       // c.DocumentFilter<ApplyResourceDocumentation>();

                        c.DescribeAllEnumsAsStrings();

                        //c.DocumentFilter<ApplyDocumentVendorExtensions>();

 

                        // In contrast to WebApi, Swagger 2.0 does not include 
the query string component when mapping a URL

                        // to an action. As a result, Swashbuckle will raise an 
exception if it encounters multiple actions

                        // with the same path (sans query string) and HTTP 
method. You can workaround this by providing a

                        // custom strategy to pick a winner or merge the 
descriptions for the purposes of the Swagger docs 

                        //

                        //c.ResolveConflictingActions(apiDescriptions => 
apiDescriptions.First());

 

                        // Wrap the default SwaggerGenerator with additional 
behavior (e.g. caching) or provide an

                        // alternative implementation for ISwaggerProvider with 
the CustomProvider option.

                        //

                        //c.CustomProvider((defaultProvider) => new 
CachingSwaggerProvider(defaultProvider));

                    })

                .EnableSwaggerUi(c =>

                    {

                        // Use the "InjectStylesheet" option to enrich the UI 
with one or more additional CSS stylesheets.

                        // The file must be included in your project as an 
"Embedded Resource", and then the resource's

                        // "Logical Name" is passed to the method as shown 
below.

                        //

                        //c.InjectStylesheet(containingAssembly, 
"Swashbuckle.Dummy.SwaggerExtensions.testStyles1.css");

 

                        // Use the "InjectJavaScript" option to invoke one or 
more custom JavaScripts after the swagger-ui

                        // has loaded. The file must be included in your 
project as an "Embedded Resource", and then the resource's

                        // "Logical Name" is passed to the method as shown 
above.

                        //

                        //c.InjectJavaScript(thisAssembly, 
"Swashbuckle.Dummy.SwaggerExtensions.testScript1.js");

 

                        // The swagger-ui renders boolean data types as a 
dropdown. By default, it provides "true" and "false"

                        // strings as the possible choices. You can use this 
option to change these to something else,

                        // for example 0 and 1.

                        //

                        //c.BooleanValues(new[] { "0", "1" });

 

                        // By default, swagger-ui will validate specs against 
swagger.io's online validator and display the result

                        // in a badge at the bottom of the page. Use these 
options to set a different validator URL or to disable the

                        // feature entirely.

                        //c.SetValidatorUrl("http://localhost/validator";);

                        //c.DisableValidator();

 

                        // Use this option to control how the Operation listing 
is displayed.

                        // It can be set to "None" (default), "List" (shows 
operations for each resource),

                        // or "Full" (fully expanded: shows operations and 
their details).

                        //

                        //c.DocExpansion(DocExpansion.List);

 

                        // Use the CustomAsset option to provide your own 
version of assets used in the swagger-ui.

                        // It's typically used to instruct Swashbuckle to 
return your version instead of the default

                        // when a request is made for "index.html". As with all 
custom content, the file must be included

                        // in your project as an "Embedded Resource", and then 
the resource's "Logical Name" is passed to

                        // the method as shown below.

                        //

                        //c.CustomAsset("index", containingAssembly, 
"YourWebApiProject.SwaggerExtensions.index.html");

 

                        // If your API has multiple versions and you've applied 
the MultipleApiVersions setting

                        // as described above, you can also enable a select box 
in the swagger-ui, that displays

                        // a discovery URL for each version. This provides a 
convenient way for users to browse documentation

                        // for different API versions.

                        //

                        //c.EnableDiscoveryUrlSelector();

 

                        // If your API supports the OAuth2 Implicit flow, and 
you've described it correctly, according to

                        // the Swagger 2.0 specification, you can enable UI 
support as shown below.

                        //

                        //c.EnableOAuth2Support("test-client-id", "test-realm", 
"Swagger UI");

                    });

        }

        //public void Apply(Operation operation, SchemaRegistry schemaRegistry, 
ApiDescription apiDescription)

        //{

        //    if (operation.parameters == null)

        //        return;

        //    IDictionary<string, object> parameterValuePairs =

        //    GetParameterValuePairs(apiDescription.ActionDescriptor);

 

        //    foreach (var param in operation.parameters)

        //    {

        //        if (param.schema != null && param.schema.@ref != null)

        //        {

        //            string schemaName = 
[email protected]('/').LastOrDefault();

        //            if (schemaRegistry.Definitions.ContainsKey(schemaName))

        //                foreach (var props in 
schemaRegistry.Definitions[schemaName].properties)

        //                {

        //                    if (parameterValuePairs.ContainsKey(props.Key))

        //                        props.Value.@default = 
parameterValuePairs[props.Key];

        //                }

        //        }

        //        var parameterValuePair = parameterValuePairs.FirstOrDefault(p 
=> p.Key.IndexOf(param.name, StringComparison.InvariantCultureIgnoreCase) >= 0);

        //        param.@default = parameterValuePair.Value;

        //    }

        //}

 

        //private IDictionary<string, object> 
GetParameterValuePairs(HttpActionDescriptor actionDescriptor)

        //{

        //    IDictionary<string, object> parameterValuePairs = new 
Dictionary<string, object>();

 

        //    foreach (SwaggerDefaultValue defaultValue in 
actionDescriptor.GetCustomAttributes<SwaggerDefaultValue>())

        //    {

        //        parameterValuePairs.Add(defaultValue.Name, 
defaultValue.Value);

        //    }

 

        //    foreach (var parameter in actionDescriptor.GetParameters())

        //    {

        //        if (!parameter.ParameterType.IsPrimitive)

        //        {

        //            foreach (PropertyInfo property in 
parameter.ParameterType.GetProperties())

        //            {

        //                var defaultValue = GetDefaultValue(property);

 

        //                if (defaultValue != null)

        //                {

        //                    parameterValuePairs.Add(property.Name, 
defaultValue);

        //                }

        //            }

        //        }

        //    }

 

        //    return parameterValuePairs;

        //}

    }

}

The web.config is the same

 

My nugets:

 

<?xml version="1.0" encoding="utf-8"?>

<packages>

  <package id="angularjs" version="1.2.1" targetFramework="net45" />

  <package id="Antlr" version="3.4.1.9004" targetFramework="net45" />

  <package id="bootstrap" version="3.0.2" targetFramework="net45" />

  <package id="Breeze.Client" version="1.4.6" targetFramework="net45" />

  <package id="datajs" version="1.1.1" targetFramework="net45" />

  <package id="Flurl" version="0.1.0" targetFramework="net452" />

  <package id="jQuery" version="1.9.1" targetFramework="net45" />

  <package id="Microsoft.AspNet.Cors" version="5.0.0" targetFramework="net45" />

  <package id="Microsoft.AspNet.Mvc" version="5.0.0" targetFramework="net45" />

  <package id="Microsoft.AspNet.OData" version="5.9.0" targetFramework="net451" 
/>

  <package id="Microsoft.AspNet.Razor" version="3.0.0" targetFramework="net45" 
/>

  <package id="Microsoft.AspNet.SignalR" version="2.2.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.SignalR.Core" version="2.2.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.SignalR.JS" version="2.2.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.SignalR.SystemWeb" version="2.2.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.Web.Optimization" version="1.1.1" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.WebApi" version="5.0.0" targetFramework="net45" 
/>

  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" 
targetFramework="net451" />

  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" 
targetFramework="net451" />

  <package id="Microsoft.AspNet.WebApi.SelfHost" version="5.0.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.WebApi.Tracing" version="5.0.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" 
targetFramework="net452" />

  <package id="Microsoft.AspNet.WebPages" version="3.0.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.WebPages.Data" version="3.0.0" 
targetFramework="net45" />

  <package id="Microsoft.AspNet.WebPages.WebData" version="3.0.0" 
targetFramework="net45" />

  <package id="Microsoft.Bcl" version="1.1.3" targetFramework="net45" />

  <package id="Microsoft.Bcl.Build" version="1.0.10" targetFramework="net45" />

  <package id="Microsoft.Data.Edm" version="5.6.0" targetFramework="net45" />

  <package id="Microsoft.Data.OData" version="5.6.0" targetFramework="net45" />

  <package id="Microsoft.IdentityModel.Protocol.Extensions" version="1.0.0" 
targetFramework="net451" />

  <package id="Microsoft.Net.Http" version="2.2.15" targetFramework="net45" />

  <package id="Microsoft.OData.Core" version="6.15.0" targetFramework="net451" 
/>

  <package id="Microsoft.OData.Edm" version="6.15.0" targetFramework="net451" />

  <package id="Microsoft.Owin" version="3.0.1" targetFramework="net451" />

  <package id="Microsoft.Owin.Cors" version="3.0.0" targetFramework="net45" />

  <package id="Microsoft.Owin.Host.SystemWeb" version="2.1.0" 
targetFramework="net45" />

  <package id="Microsoft.Owin.Security" version="3.0.1" 
targetFramework="net451" />

  <package id="Microsoft.Owin.Security.ActiveDirectory" version="3.0.1" 
targetFramework="net451" />

  <package id="Microsoft.Owin.Security.Cookies" version="3.0.1" 
targetFramework="net451" />

  <package id="Microsoft.Owin.Security.Jwt" version="3.0.1" 
targetFramework="net451" />

  <package id="Microsoft.Owin.Security.OAuth" version="3.0.1" 
targetFramework="net451" />

  <package id="Microsoft.Owin.Security.WsFederation" version="3.0.1" 
targetFramework="net451" />

  <package id="Microsoft.Spatial" version="6.15.0" targetFramework="net451" />

  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" 
targetFramework="net45" />

  <package id="Microsoft.WindowsAzure.ConfigurationManager" version="2.0.1.0" 
targetFramework="net451" />

  <package id="Newtonsoft.Json" version="7.0.1" targetFramework="net452" />

  <package id="Owin" version="1.0" targetFramework="net45" />

  <package id="PerfIt" version="0.1.5" targetFramework="net45" />

  <package id="Q" version="0.9.7" targetFramework="net45" />

  <package id="RequireJS" version="2.1.9" targetFramework="net45" />

  <package id="Spin.js" version="1.3" targetFramework="net45" />

  <package id="Swashbuckle" version="5.3.2" targetFramework="net452" />

  <package id="Swashbuckle.Core" version="5.3.2" targetFramework="net452" />

  <package id="Swashbuckle.OData" version="2.18.3" targetFramework="net452" />

  <package id="System.IdentityModel.Tokens.Jwt" version="4.0.0" 
targetFramework="net451" />

  <package id="System.Spatial" version="5.6.0" targetFramework="net45" />

  <package id="toastr" version="2.0.1" targetFramework="net45" />

  <package id="Unity" version="3.0.1304.1" targetFramework="net45" />

  <package id="Unity.WebAPI" version="0.10" targetFramework="net45" />

  <package id="WebActivatorEx" version="2.1.0" targetFramework="net452" />

  <package id="WebGrease" version="1.5.2" targetFramework="net45" />

  <package id="WindowsAzure.Storage" version="2.0.6.0" targetFramework="net451" 
/>

</packages>

 

and the controller

 

using System.Linq;

using log4net;

using Stabilis.Situator.OpServerTypes;

using ThirdPartyWebAPI.common.Types;

using SituatorLinq;

using System.Web.OData;

using System.Web.Http;

 

namespace ThirdPartyWebAPI.Controllers

{

    public class KeywordIncidentTypesController : ODataController

    {

        private IOpClientWrapper _opClientWrapper = null;

        private ILog _log;

        private Context _LINQ;

 

        public KeywordIncidentTypesController(Context context, IOpClientWrapper 
opClientWrapper, ILog log)

        {

            _opClientWrapper = opClientWrapper;

            _log = log;

            _LINQ = context;

        }

 

        [EnableQuery]

        public IQueryable<KeywordIncidentTypes> Get()

        {

            return _LINQ.KeywordIncidentTypesQuery;

        }

 

        [EnableQuery]

        public SingleResult<KeywordIncidentTypes> Get(string key)

        {

            int incidentTypeId;

            string keyword;

            KeywordIncidentTypes.ResolveUniqueUnifiedKey(key, out 
incidentTypeId, out keyword);

 

            return SingleResult.Create(_LINQ.KeywordIncidentTypesQuery.Where(p 
=> p.IncidentTypeID == incidentTypeId &&

                p.Keyword == keyword));

        }

 

        public IHttpActionResult Post(KeywordIncidentTypes keyword)

        {

            _opClientWrapper.IncidentProxy.AddKeywordIncidentType(keyword);

 

            return Ok(keyword);

        }

    }

}

 

Thanks


On Thursday, August 4, 2016 at 2:19:14 AM UTC+3, Ron wrote: 

You don’t really provide enough details here – but based on the exception it 
looks like it’s a Swashbuckle integration. 

If that’s indeed the case, you should open a ticket directly on Swashbuckles 
repository as it’s a third party tool.

 

 

From: <[email protected]> on behalf of Michal Carmeli 
<[email protected]>
Reply-To: "[email protected]" <[email protected]>
Date: Sunday, 31 July 2016 at 22:56
To: Swagger <[email protected]>
Subject: I try to add Odata Controllers (I Succeed to add API controllers). But 
I always get this error.

 

500 : {"$id":"1","Message":"An error has 
occurred.","ExceptionMessage":"Precondition failed: currentProperty != 
null","ExceptionType":"System.Diagnostics.Contracts.__ContractsRuntime+ContractException","StackTrace":"
 at 
System.Diagnostics.Contracts.__ContractsRuntime.TriggerFailure(ContractFailureKind
 kind, String msg, String userMessage, String conditionTxt, Exception 
inner)\r\n at 
System.Diagnostics.Contracts.__ContractsRuntime.ReportFailure(ContractFailureKind
 kind, String msg, String conditionTxt, Exception inner)\r\n at 
System.Diagnostics.Contracts.__ContractsRuntime.Requires(Boolean condition, 
String msg, String conditionTxt)\r\n at 
Swashbuckle.OData.SchemaRegistryExtensions.GetEdmPropertyName(MemberInfo 
currentProperty, IEdmStructuredType edmType)\r\n at 
Swashbuckle.OData.SchemaRegistryExtensions.ApplyEdmModelPropertyNamesToSchema(SchemaRegistry
 registry, IEdmModel edmModel, Type type)\r\n at 
Swashbuckle.OData.SchemaRegistryExtensions.GetOrRegisterResponseType(SchemaRegistry
 registry, IEdmModel edmModel, Type type)\r\n at 
Swashbuckle.OData.ODataSwaggerProvider.CreateOperation(ApiDescription 
apiDescription, SchemaRegistry schemaRegistry)\r\n at 
Swashbuckle.OData.ODataSwaggerProvider.CreatePathItem(IEnumerable`1 
apiDescriptions, SchemaRegistry schemaRegistry)\r\n at 
Swashbuckle.OData.ODataSwaggerProvider.<>c__DisplayClass4_0.<GetSwagger>b__3(IGrouping`2
 group)\r\n at 
System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 
source, Func`2 keySelector, Func`2 elementSelector, IEqualityComparer`1 
comparer)\r\n at 
System.Linq.Enumerable.ToDictionary[TSource,TKey,TElement](IEnumerable`1 
source, Func`2 keySelector, Func`2 elementSelector)\r\n at 
Swashbuckle.OData.ODataSwaggerProvider.GetSwagger(String rootUrl, String 
apiVersion)\r\n at 
Swashbuckle.Application.SwaggerDocsHandler.SendAsync(HttpRequestMessage 
request, CancellationToken cancellationToken)\r\n at 
System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request, 
CancellationToken cancellationToken)\r\n at 
System.Web.Http.Dispatcher.HttpRoutingDispatcher.SendAsync(HttpRequestMessage 
request, CancellationToken cancellationToken)\r\n at 
System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, 
CancellationToken cancellationToken)\r\n at 
ThirdPartyWebAPI.ApiKeyVerificationChannel.SendAsync(HttpRequestMessage 
request, CancellationToken cancellationToken) in 
c:\\SM\\NG\\Trunk\\Odata4\\SM_NG_VH_DEV\\WebAPIServerV2\\ThirdPartyWebAPI\\Common\\ApiKeyVerificationChannel.cs:line
 55\r\n at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage 
request, CancellationToken cancellationToken)\r\n at 
ThirdPartyWebAPI.Common.CorsHandler.SendAsync(HttpRequestMessage request, 
CancellationToken cancellationToken) in 
c:\\SM\\NG\\Trunk\\Odata4\\SM_NG_VH_DEV\\WebAPIServerV2\\ThirdPartyWebAPI\\Common\\CorsHandler.cs:line
 70\r\n at System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage 
request, CancellationToken cancellationToken)\r\n at 
System.Web.Http.Tracing.Tracers.RequestMessageHandlerTracer.<>n__FabricatedMethod6(HttpRequestMessage
 , CancellationToken )\r\n at 
System.Web.Http.Tracing.Tracers.RequestMessageHandlerTracer.<>c__DisplayClass4.<SendAsync>b__1()\r\n
 at 
System.Web.Http.Tracing.ITraceWriterExtensions.TraceBeginEndAsync[TResult](ITraceWriter
 traceWriter, HttpRequestMessage request, String category, TraceLevel level, 
String operatorName, String operationName, Action`1 beginTrace, Func`1 execute, 
Action`2 endTrace, Action`1 errorTrace)\r\n at 
System.Web.Http.Tracing.Tracers.RequestMessageHandlerTracer.SendAsync(HttpRequestMessage
 request, CancellationToken cancellationToken)\r\n at 
System.Net.Http.DelegatingHandler.SendAsync(HttpRequestMessage request, 
CancellationToken cancellationToken)\r\n at 
System.Web.Http.HttpServer.<>n__FabricatedMethod9(HttpRequestMessage , 
CancellationToken )\r\n at 
System.Web.Http.HttpServer.<SendAsync>d__0.MoveNext()"} 
http://localhost:59418/swagger/docs/v1

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

-- 
You received this message because you are subscribed to the Google Groups 
"Swagger" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to