API的代码写完以后,在生成帮助文档时,引入了Swashbuckle.AspNetCore包,在本地配置完以后是可以达到预期效果的,但是我发布在IIS 的时候遇到一个大问题
经过仔细排查 发现是这一句代码造成的
只要我注释掉这句代码 发布就访问没问题,但是帮助文档肯定是没有了,因为这里是注册帮助文档服务的,所以自己很困惑,这到底是自己的BUG 还是自带的BUG,希望大神解答一下
在WebHost中启用CaptureStartupErrors(true)和.UseSetting(WebHostDefaults.DetailedErrorsKey, "true")
,就可以看到具体的错误信息了。
这个错误信息在哪里查看呢
我把这个文件复制到这个路径下面还是这个错误
感谢啊 我在项目里面把这两个文件复制到发布文件夹里面就发布正常了,不知道为什么发布出来会少这两个文件
@不单单是菜鸟: 你是怎么发布的?还是你改了默认生成的xml文件地址,导致其无法正常的复制到指定地方了。
@不单单是菜鸟: XML 这个文件没有Swagger也是可以解析的。
当然如果你配置Swagger去读,就得有,不如就会报你上面这个错误。
至于 dev这个文件,我发布的里面也是没有的,不会出错,所以问题可能还是和你其他的代码有关。光靠你提供的有限信息无法判断。
@Blackheart: 我改了默认的名字,没有改路径,默认的路径是在debug下面,后来我怀疑是不是要路径放在release 下面又改到release 下面 发布还是不行 最后我才直接去复制文件的
@爱编程的大叔: 我也很奇怪啊,并没有其他复杂的东西 我新建了一个默认的Webapi项目然后去引入Swagger包 然后引用Swagger服务,发布出来也是这个错误
@爱编程的大叔: 我刚刚又去测了一下 不用dev那个文件夹也可以了 不知道什么鬼啊 心塞 只需要那个xml文件就可以了
@不单单是菜鸟: 那个XML你在代码里面使用了,代码注释掉使用XML,Swagger还是能工作,只是API没有Description而已。
@爱编程的大叔: 现在就是这个效果了 正常了
@不单单是菜鸟: xml不用改的,默认是程序集dll的名字,build的时候勾选所有配置,路径这里留空就好了。或者在csproj文件中加上
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(AssemblyName).xml</DocumentationFile>
就可以自动根据debug,ralese或者你自定义的其他便宜配置项以及编译目标平台自动构造出来正确的文件路径了。
运行可以,发布不行,检查两件事
1、你的项目.deps.json 文件里面是不是更新了依赖?
2、有四个swagger的DLL你有没有复制到IIS网站里面去?
就这样而已。
发布出来四个swagger的DLL都在的,至于你说的更新依赖的问题,可以详细点吗,因为第一次发布core,还不太熟悉它的发布文件
@不单单是菜鸟: 你反正还没正式上线,大不了整个文件夹复制过去啊。
我是已经上线了,挑着文件覆盖,才出现这个问题。
比如你的项目叫 abc, 那有个 abc.deps.json 文件。里面有swagger的引用。
@爱编程的大叔: 感觉看不出来问题啊
@爱编程的大叔: 这是所有关于swagger的了