下载“https:// $ metadata”时出现错误。请求失败,http状态为403:Forbidden - 使用HTTPS进行XAMARIN WEB REFERENCE

时间:2017-10-23 06:26:12

标签: web-services wcf ssl iis xamarin.android

我设法创建了一个自签名serviceSSL的网络IIS。它的设置首先设置为客户端证书为无,并且不需要SSL。那时候可以访问网页浏览器和移动网络参考。

网络浏览器
Web Service Host Running

Xamarin Web参考
enter image description here

但是当我将SSL设置设置为必需时,它们现在都被禁止了。我在SSL配置的设置中缺少什么?

通过IIS进行SSL设置
SSL Settings set to required

Web浏览器禁止访问
Web Browser Error

Xamarin Web参考禁止访问
Web Reference Error

WebConfig

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="constring" providerName="System.Data.SqlClient" connectionString="Data Source = source;Initial Catalog = dbname; User ID = user; Password = pw" />
  </connectionStrings>
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation targetFramework="4.5" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding maxReceivedMessageSize="10485760" name="SecureHttpBinding">
          <readerQuotas maxStringContentLength="10485760"></readerQuotas>
          <security mode="Transport">
            <transport clientCredentialType="None"></transport>
          </security>
        </binding>
      </basicHttpBinding>    
    </bindings>

    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
          <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

1 个答案:

答案 0 :(得分:0)

要在网络浏览器中通过HTTPS访问网络服务,我按了this link for creating temporary client certificate,但我将步骤#5更改为此命令

makecert -sk MyKeyName -iv RootCaClientTest.pvk -n "CN=tempClientcert" -ic RootCaClientTest.cer -sr localmachine -ss my -sky exchange -pe

我将当前用户更改为 localmachine ,将签名更改为 exchange 以便它将在个人证书存储区中。当您再次访问该站点时,它将要求您提供客户端证书,您可以选择继续该证书。

通过网络参考(以某种方式禁止)访问visual studio xamarin中的服务的主要问题。
我找到了this link to solve the forbidden problem。您可以看到(c)MarkoOkram的第二篇文章作为解决方案。

“我通过在文件系统上保存Web浏览器.wsdl和.xsd文件来解决问题,将这些文件中的引用更改为匹配的文件。比我在visual studio中成功添加对该文件系统.wsdl文件的引用。” - (c)MarkoOkram

我下载了用WSDL编写的文件WSDL和XSD,然后将文件路径重新定位到各自的目录,就完成了。

更新:我还尝试导入singleWSDL,无需编辑xsd的

即可运行