如何从身份验证代理后面运行svcutil.exe

kmo*_*ote 7 wcf svcutil.exe

我想运行该svcutil.exe工具来访问互联网上的Web服务.不幸的是,每当我尝试时,我都会收到一堆包含以下消息的错误:

请求失败,HTTP状态为407:需要代理身份验证(ISA Server需要授权才能完成请求.拒绝访问Web代理筛选器.

正如我从这篇相关文章中了解到(这里更多详细信息),问题是我坐在验证代理后面.该帖子解释说我需要编辑app.config文件,但我无法弄清楚如何做到这一点.我想我会使用这个 /svcutilConfig:alternate_app.config开关,但我不知道如何构造一个有效的.config文件来传递给那个开关.svcutil.exe使用的默认app.config文件是什么?

kmo*_*ote 11

好吧,我想我已经找到了问题的答案:

事实证明,调用的默认.config文件svcutil.exe被调用svcutil.exe.config,并且(至少对我而言)它存在于此文件夹中:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin
Run Code Online (Sandbox Code Playgroud)

我决定直接编辑该文件(而不是用/svcutilConfig开关摸索).我需要管理员权限才能这样做.

该文件的最终内容如下所示:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <generatePublisherEvidence enabled="false" />
  </runtime>
  <system.net> 
    <defaultProxy useDefaultCredentials="true" /> 
  </system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

(秘密酱埋在<system.net>元素中.)

为了使这一切正常工作,我必须以管理员身份启动命令提示符,导航到上面列出的文件夹,然后从那里运行svcutil.exe命令.

希望这有助于其他一些陷入困境的可怜的灵魂!感谢@AndrewWebb提供了让我前进的线索!

  • 是的,我也必须为SvcUtil这样做.对于Web应用程序,web.config仍为"web.config",但对于桌面应用程序,源代码中的app.config变为"<appName> .exe.config",如您所见.手动编辑svcutil.exe.config(和类似文件)对我来说已经非常熟悉了!另外:如果您首先遇到没有*配置文件的桌面应用程序*,您始终可以使用正确的名称创建一个,在defaultProxy配置中打包,并将其保存到.exe所在的文件夹中. (3认同)
  • 如果svcutil.exe.config不存在,你可以像上面的kmote一样创建它,它会正常工作. (2认同)