Web Services 服务参考:HTTP状态404-元数据包含无法解析的引用

ltskdhd1  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(146)

我试图连接到我的C#控制台应用程序中的加州税率公共API,并收到下面的服务引用错误。我已经成功地使用了大约9个月。我尝试在新应用程序中重新创建引用,但收到相同的错误。我不确定要采取哪些故障排除步骤。如果我能提供更多有用的信息,请告诉我。
该服务位于此处,并公开测试:http://services.gis.boe.ca.gov/api/taxrates/Rates.svc
下载“http://services.gis.boe.ca.gov/api/taxrates/Rates.svc/$metadata”时出错。请求失败,HTTP状态为404:找不到。元数据包含无法解析的引用:'http://services.gis.boe.ca.gov/api/taxrates/Rates.svc'。服务器未提供有意义的答复;这可能是由于约定不匹配、会话过早关闭或内部服务器错误造成的。如果服务是在当前解决方案中定义的,请尝试生成解决方案并再次添加服务引用。

pjngdqdw

pjngdqdw1#

从端点获取的wsdl无效。

<xs:element name="TestResponse">
  <xs:element minOccurs="0" maxOccurs="1" name="TestResult" type="xs:string"/>          
</xs:element>

字符串
应该是

<xs:element name="TestResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element minOccurs="0" maxOccurs="1" name="TestResult" type="xs:string"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>


同样的

<xs:element name="GetRateResponse">
    <xs:element minOccurs="0" maxOccurs="1" name="GetRateResult" type="tns:CARateResponseCollection"/>
</xs:element>


<wsdl:message name="ISoapService_Test_OutputMessage">
    <wsdl:part name="parameters" element="tns:String"/>
</wsdl:message>


应该是

<wsdl:message name="ISoapService_Test_OutputMessage">
  <wsdl:part name="parameters" element="tns:TestResponse"/>
</wsdl:message>


最后

<wsdl:message name="ISoapService_GetRate_OutputMessage">
    <wsdl:part name="parameters" element="tns:CARateResponseCollection"/>
</wsdl:message>


必须是

<wsdl:message name="ISoapService_GetRate_OutputMessage">
        <wsdl:part name="parameters" element="tns:GetRateResponse/>
</wsdl:message>

a2mppw5e

a2mppw5e2#

下面是我使用@Rihab Berrich的代码。我不记得到底是什么问题,但希望这将有助于你和其他人谁绊倒在这一点上。

string apiParams = $"?address={AddressLine1.Replace(' ', '+')}&city={City.Replace(' ', '+')}&zip={PostalCode.Replace(' ', '+')}";
string endPoint = $"https://services.maps.cdtfa.ca.gov/api/taxrate/GetRateByAddress{apiParams}";
RestClient client = new(endPoint) { Timeout = 30000 };

RestRequest request = new();
request.AddHeader("Cookie", "TiPMix=28.368612388085868; x-ms-routing-name=self");
IRestResponse response = client.Execute(request);
CATax cATax = JsonConvert.DeserializeObject<CATax>(response.Content);

字符串
下面是CATax数据模型类

public class CATaxModel
{
    public class CATax
    {
        public Taxrateinfo[] TaxRateInfo { get; set; }
        public Geocodeinfo GeocodeInfo { get; set; }
        public string TermsOfUse { get; set; }
        public string Disclaimer { get; set; }
    }

    public class Geocodeinfo
    {
        public string[] MatchCodes { get; set; }
        public string FormattedAddress { get; set; }
        public string Confidence { get; set; }
        public string CalcMethod { get; set; }
        public int BufferDistance { get; set; }
    }

    public class Taxrateinfo
    {
        public decimal Rate { get; set; }
        public string Jurisdiction { get; set; }
        public string City { get; set; }
        public string County { get; set; }
        public string Tac { get; set; }
    }
}

相关问题