如何在APIM中添加绑定处理策略?

时间:2019-04-30 05:14:16

标签: azure powershell azure-api-management

我正在尝试将以下绑定处理策略添加到我的APIM中以进行操作:

<policies>
    <inbound>
        <base />
        <rewrite-uri template="/stores/{Location}/slots?StartDate={StartDateTime}&amp;AppointmentType={AppointmentType}" />
        <set-header name="ocp-apim-subscription-key" exists-action="override">
            <value>12d0bdd57ca84fa9ad35f13f22605dbf</value>
        </set-header>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

我已经找到了该Commandlet,但是没有关于放入-Policy中的内容的信息。

我尝试使用以下内容

    $policyString = '<policies>
    <inbound>
        <base />
        <rewrite-uri template="/stores/{Location}/slots?StartDate={StartDateTime}&amp;AppointmentType={AppointmentType}" />
        <set-header name="ocp-apim-subscription-key" exists-action="override">
            <value>12d0bdd57ca84fa9ad35f13f22605dbf</value>
        </set-header>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>'

Set-AzureRmApiManagementPolicy -Context $apiMgmtContext -ApiId $apiId -Policy $policyString -OperationId 'GetCalendar'

但是它给了我这个错误:

Operation returned an invalid status code 'BadRequest'

“政策”参数期望使用什么格式?

2 个答案:

答案 0 :(得分:1)

我可以重现您的问题,> This is not a true way, first you should add the HTML file, then after create a table inside the file. Now attach a file with StringBuilder. ## Here is my send email with attachment code ## StringBuilder sbMailBody = new StringBuilder(); sbMailBody.Append(Server.MapPath("~/Content/fielname.html")); var sendmail = new MailAddress("", "Akhil"); var receiver = new MailAddress("", "Buddy"); var subject = "Request for Asset!!"; var body = sbMailBody.ToString(); 参数的格式似乎正确,该问题是由您的政策中的-Policy引起的。

rewrite-uri

enter image description here

我用官方文档中的示例对其进行了测试,效果很好。

<rewrite-uri template="/stores/{Location}/slots?StartDate={StartDateTime}&amp;AppointmentType={AppointmentType}" />

enter image description here

有关<rewrite-uri template="/put" /> 的用法的更多详细信息,您可以参考此link

答案 1 :(得分:0)

感谢王悦为我指出正确的方向,以下是解决方法:

我尝试直接通过门户网站添加XML,并收到此错误:

  

一个或多个字段包含不正确的值:元素错误   第4行第10栏的'rewrite-uri':仅在   原始网址模板可用于重写模板

结果证明我所指的参数(StartDateTimeAppointmentType)不是APIM中模板参数的一部分。

一旦我将它们添加为APIM中的模板参数,该命令就会起作用。

如果Powershell Commandlet返回与Azure门户相同的错误,而不仅仅是“ BadRequest”,则会很好。