swaggerwcf
swaggerwcf copied to clipboard
Upgrading to any version higher than release 0.2.9
Hello ppl after update to new version my swagger dont work:
`
em SwaggerWcf.Support.TypeExtensions.GetServiceInfo(TypeInfo typeInfo) em C:\Users\Daniel\Downloads\swaggerwcf-master\swaggerwcf-master\src\SwaggerWcf\Support\TypeExtensions.cs:line 30 em SwaggerWcf.Support.ServiceBuilder.BuildPaths(Service service, IList
1 hiddenTags, List1 visibleTags, IList
1 definitionsTypesList) em C:\Users\Daniel\Downloads\swaggerwcf-master\swaggerwcf-master\src\SwaggerWcf\Support\ServiceBuilder.cs:line 121 em SwaggerWcf.Support.ServiceBuilder.BuildServiceCommon(String path, Action4 buildPaths) em C:\Users\Daniel\Downloads\swaggerwcf-master\swaggerwcf-master\src\SwaggerWcf\Support\ServiceBuilder.cs:line 40 em SwaggerWcf.Support.ServiceBuilder.Build(String path) em C:\Users\Daniel\Downloads\swaggerwcf-master\swaggerwcf-master\src\SwaggerWcf\Support\ServiceBuilder.cs:line 18 em SwaggerWcf.SwaggerWcfEndpoint.Init(Func
2 buildService) em C:\Users\Daniel\Downloads\swaggerwcf-master\swaggerwcf-master\src\SwaggerWcf\SwaggerWcfEndpoint.cs:line 61 em SwaggerWcf.SwaggerWcfEndpoint..ctor() em C:\Users\Daniel\Downloads\swaggerwcf-master\swaggerwcf-master\src\SwaggerWcf\SwaggerWcfEndpoint.cs:line 23 em CreateSwaggerWcf.SwaggerWcfEndpoint() em System.ServiceModel.Dispatcher.InstanceProvider.GetInstance(InstanceContext instanceContext, Message message) em System.ServiceModel.Dispatcher.InstanceBehavior.GetInstance(InstanceContext instanceContext, Message request) em System.ServiceModel.InstanceContext.GetServiceInstance(Message message) em System.ServiceModel.Dispatcher.InstanceBehavior.EnsureServiceInstance(MessageRpc& rpc) em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage41(MessageRpc& rpc) em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage4(MessageRpc& rpc) em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc) em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage3(MessageRpc& rpc) em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage2(MessageRpc& rpc) em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage11(MessageRpc& rpc) em System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage1(MessageRpc& rpc) em System.ServiceModel.Dispatcher.MessageRpc.Process(BooleanisOperationContextSet)``
I Fill the info Info attribute when Configure EndPoint:
var info = new SwaggerWcf.Models.Info
{
Version = "1.0.0",
Title = "WebService",
Description = "WebService Descr",
TermsOfService = "s asas",
Contact = new SwaggerWcf.Models.InfoContact()
{
Name = "Daniel",
Email ="[email protected]",
Url = "http://google.pt"
},
License = new SwaggerWcf.Models.InfoLicense()
{
Name ="-",
Url = "http://google.pt"
}
};
` SwaggerWcf.SwaggerWcfEndpoint.Configure(info, null);`
I open project and do a little debug and found on:
SwaggerWcf\Support\TypeExtensions.cs Function GetServiceInfo line 30
the following line
var infoAttr = typeInfo.GetCustomAttribute<SwaggerWcfServiceInfoAttribute>() ??
throw new ArgumentException($"{typeInfo.FullName} does not have {nameof(SwaggerWcfServiceInfoAttribute)}");
Change to
var infoAttr = typeInfo.GetCustomAttribute<SwaggerWcfServiceInfoAttribute>();
if (infoAttr == null && SwaggerWcfEndpoint.Info != null)
return SwaggerWcfEndpoint.Info;
else if (infoAttr == null && SwaggerWcfEndpoint.Info == null)
throw new ArgumentException($"{typeInfo.FullName} does not have {nameof(SwaggerWcfServiceInfoAttribute)}");
And not all Works
I do not have a way to set the attribute on the interface because I have 10 different interfaces in webservice Its possible to pull the fix to main repo?
cumps
Add the following to your config file and change the values accordingly
<swaggerwcf> <settings> <setting name="InfoDescription" value="Sample Service to test SwaggerWCF" /> <setting name="InfoVersion" value="0.0.1" /> <setting name="InfoTermsOfService" value="Terms of Service" /> <setting name="InfoTitle" value="SampleService" /> <setting name="InfoContactName" value="Abel Silva" /> <setting name="InfoContactUrl" value="http://github.com/abelsilva" /> <setting name="InfoContactEmail" value="[email protected]" /> <setting name="InfoLicenseUrl" value="https://github.com/abelsilva/SwaggerWCF/blob/master/LICENSE" /> <setting name="InfoLicenseName" value="Apache License" /> </settings> </swaggerwcf>
Hello i dont use config file i use WebServiceHost
Example of creation
var swaggerHost = new WebServiceHost(typeof(SwaggerWcf.SwaggerWcfEndpoint), new Uri(URL));
var info = new SwaggerWcf.Models.Info
{
Version = "1.1.0",
Title = "WebService",
Description = "WebService",
TermsOfService = "",
Contact = new SwaggerWcf.Models.InfoContact()
{
Name = "teste,
Email ="[email protected]",
Url = "http://google.pt"
},
License = new SwaggerWcf.Models.InfoLicense()
{
Name = "Copyright",
Url = "http://google.pt"
}
};
**SwaggerWcf.SwaggerWcfEndpoint.Configure(info, null);**
swaggerHost.Open();
I made a pull request #178, if you want to accept ...
it is not wcf config, it is swaggerwcf config. https://github.com/abelsilva/swaggerwcf/blob/master/README.md Step 4: Configure WCF services general information
for the service info property, there are three sources (appear in order):
- the config file
- SwaggerWcfServiceInfoAttribute
- SwaggerWcfEndpoint.Configure(info, null)
1 is higher than 2, 3 is highest priority
I use method 3 and dont work,,, the static var dont pass to GetServiceInfo function
yes, you are right. if you don't use method 1, either method 2, there will be a exception in method 2. if you use method 1, method 2 will not run, and method 3 will override method 1.