共享主机上的WCF服务响应"HTTP/1.1 400错误请求"<空白页,XML解析错误,无效地址,无法找到网页>

Mic*_*k N 5 hosting wcf shared-hosting

这是遇到问题的人和问题的信息.

编辑:问题是为什么要删除"www." 如果在没有"www."的情况下可以引用在相同地址运行的网站,则会导致此错误.

我最近使用一个简单的WCF服务(来自endpoint.tv的服务)重现了这个问题,解决了通常的配置问题,一方面将服务从本地IIS移动到共享主机.

问题是在检查浏览器中的URL时,以下响应(来自fiddler).在网上搜索关于该主题的帖子时,我发现除了通常的共享主机配置问题修复它们的帖子之外,还有许多未解决的问题指向同一问题.

HTTP/1.1 400错误请求 服务器:Microsoft-IIS/7.0 X-Powered-By:ASP.NET日期:星期二,2010年8月17日00:27:52 GMT内容长度:0

在Safari/Chrome中,这表示为空白页面.

在IE中你会得到"无法找到网页".

在FF中你得到"XML解析错误:找不到元素位置:http:// ................第1行,第1列:"(我在许多未解决的帖子中看到过)在网络上 - 随意反向链接可能的解决方案)

在Opera中你会得到"无效的地址"

关于这一段时间我一直在摸不着头脑,然后我想尝试加入"www".我以前从我的网址中省略了没有特别的理由.

问题解决了.

我现在可以在浏览器中看到正常输出,并通过WCF测试客户端与服务进行交互.

所以问题是:

当我知道它对浏览到同一地址托管的网站没有什么影响时,为什么这会对托管的WCF服务产生影响?有或没有"www." 我可以浏览同一个域中的网站,该网站托管在同一个帐户中.

到目前为止,我已经在GoDaddy服务上测试了这个repro.我稍后可能会尝试一些其他人.

此外,如果您碰巧知道 - 我有兴趣知道哪些功能可能会使我的WCF服务需要完全信任而不是中等信任.并且您对使用这些功能是否是一个好主意(在最少的私有意识形态的背景下)有任何想法.

作为参考,这是web.config,包括Mike建议尝试解决此问题的其他端点.

<?xml version="1.0"?>
<configuration>

  <system.web>
    <customErrors mode="Off"/>
    <compilation><!--debug="true"-->
        <buildProviders>
          <remove extension=".svc"/>
          <add extension=".svc" type="System.ServiceModel.Activation.ServiceBuildProvider,System.ServiceModel, Version=3.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089"/>
        </buildProviders>
    </compilation>
  </system.web>

  <!-- When deploying the service library project, the content of the config file must be added to the host's 
  app.config file. System.Configuration does not support config files for libraries. -->
  <system.serviceModel>
    <services>
      <service behaviorConfiguration="blah" 
               name="WCFServ.EvalService">
        <endpoint address="http://www.abcdomain.com/WCFServ/WCFServ.EvalService.svc" 
                  binding="basicHttpBinding" 
                  contract="WCFServ.IEvalService" />
        <endpoint address="http://abcdomain.com/WCFServ/WCFServ.EvalService.svc"
                  binding="basicHttpBinding"
                  contract="WCFServ.IEvalService" />
        <!--<endpoint address="" 
                  binding="mexHttpBinding" 
                  contract="IMetadataExchange" />-->
        <!--<host>
          <baseAddresses>
            <add baseAddress="http://abcdomain.com/WCFServ/" />
          </baseAddresses>
        </host>-->
      </service>
    </services>


    <behaviors>
      <serviceBehaviors>
        <behavior name="blah">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>

    <serviceHostingEnvironment>
      <baseAddressPrefixFilters>
        <add prefix="http://www.abcdomain.com/WCFServ/"/>
      </baseAddressPrefixFilters>
    </serviceHostingEnvironment>

  </system.serviceModel>




  <!--http://localhost/WCFServ/WCFServ.EvalService.svc-->

<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
Run Code Online (Sandbox Code Playgroud)

小智 0

确保您在 Web 配置中定义了不带 www 的端点。