0

我已经阅读了几篇用户遇到同样问题的帖子。编译后,.exe 无法从 app.config 加载任何资源。即使将 app.config 复制到输出目录,也会发生这种情况。

具体来说,我遇到了一个问题,即 Web 服务客户端无法确定正确的端点配置,即使我像这样静态编译它:

this.ws = new MyServicePortTypeClient("MyServicePort", "http://mysite.com/customer_portal/ws.php");

抛出的异常状态为“System.InvalidOperationException:在 ServiceModel 客户端配置部分中找不到引用合同 'MyWebService.MyServicePortType' 的默认端点元素。这可能是因为找不到您的应用程序的配置文件,或者因为没有与此匹配的端点元素合同可以在客户端元素中找到。”

我很茫然,所以任何帮助将不胜感激。

编辑:这是 MyService.exe.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="MyServiceBinding" closeTimeout="00:01:00"
                    openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                    allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
                    maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
                    messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
                    useDefaultWebProxy="true">
                    <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
                    <security mode="None">
                        <transport clientCredentialType="None" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="UserName" algorithmSuite="Default" />
                    </security>
                </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://mysite.com/customer_portal/ws.php"
                binding="basicHttpBinding" bindingConfiguration="MyServiceBinding"
                contract="MyWebService.MyServicePortType" name="MyServicePort" />
        </client>
    </system.serviceModel>
</configuration>
4

2 回答 2

1

EXE 正在从FileName.exe.config获取设置,而不是从 App.config

FileName.exe.config应该在编译代码时自动生成,并放置在 EXE 本身旁边。

检查你有 EXE 的文件夹。你在那里看到FileName.exe.config吗?

(由于长度和格式而发布为答案)

于 2010-11-14T12:00:47.760 回答
1

好吧,在大家提供的信息的帮助下,我想通了。

问题是 installutil.exe 正在尝试使用自己的配置,而不是由服务创建的配置。在这种情况下,它会尝试加载 C:\Windows\Microsoft.NET\Framework\v2.0...\InstallUtil.config。

现在我已经弄清楚了,我可以使用它并让它正常工作。

谢谢大家!

于 2010-11-14T20:43:48.797 回答