我的WCF服务在本地托管如下:
localhost/service.svc
它在服务器上托管如下:
servername/extra/service.svc
在发出请求时,SwaggerWcf使用基本路径并添加configered元素:
localhost/user/parameter
但它应该是:
localhost/extra/user/parameter
所以我需要WCF不仅使用主机名,而且还需要更多的URL
我可以将它添加到SwaggerWcf配置中,该配置为user
,可以是extra/user
。但随后它又不再在当地工作了。
我尝试添加一个可以静态读取配置属性的Config类:
using System.Configuration;
namespace Project
{
public static class Config
{
public static readonly string SwaggerWcfRequestPath = ConfigurationManager.AppSettings["SwaggerWcf.RequestPath"] ?? "/user";
}
}
但是当我尝试使用this时:
[SwaggerWcf(Config.SwaggerWcfRequestPath)]
public class Service: IService
它仍会产生相同的错误:
Error 46 An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type.
如何动态完成?然后对于不同的环境可能会有所不同。
答案 0 :(得分:1)
目前无法做到这一点 但我今天晚些时候会看一下
可能最好的方法是允许使用Web.config
覆盖它 <configSections>
<section name="swaggerwcf" type="SwaggerWcf.Configuration.SwaggerWcfSection, SwaggerWcf"/>
</configSections>
<swaggerwcf>
<settings>
<setting name="Host" value="www.msampleservice.com"/>
<setting name="BasePath" value="/myserviceapi"/>
</settings>
</swaggerwcf>