2012-02-23 4 views
0

Мне нужно переключиться между http и https во время разработки и развертывания.Изменение web.config во время развертывания

Чтобы сделать это, мне нужно сделать следующие изменения в web.config:

<behaviors> 
    <serviceBehaviors> 
    <behavior name="DirectInstallHelperServiceBehavior"> 
     <!-- need to change to <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true"> --> 
     <serviceMetadata httpGetEnabled="true" httpsGetEnabled="false"> 
     </serviceMetadata> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

<bindings> 
    <webHttpBinding> 
    <binding> 
<!-- need to add the following, but don't know how 
     <security mode="Transport"> 
     <transport clientCredentialType="Basic"/> 
     </security> 
--> 
    </binding> 
    </webHttpBinding> 
</bindings> 

Так я пытаюсь добавить следующие строки в Web.Release.config:

<behaviors> 
    <serviceBehaviors> 
    <behavior name="DirectInstallHelperServiceBehavior"> 
     <serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" xdt:Transform="setAttribute(httpsGetEnabled, httpGetEnabled)" xdt:Locator="Match(name)"></serviceMetadata> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

<bindings> 
    <webHttpBinding> 
    <binding> 
     <security mode="Transport" xdt:Transform="InsertAfter(/configuration/system.serviceModel/bindings/webHttpBinding/binding)"> 
     <transport clientCredentialType="Basic"/> 
     </security> 
    </binding> 
    </webHttpBinding> 
</bindings> 

Но Я делаю это неправильно, потому что, когда я публикую эту службу в своей файловой системе, я все еще вижу http-версию разработчика web.config. Любая помощь приветствуется.

ответ

8

Изменить xdt:Transform значение SetAttributes. И удалите xdt:Locator, так как нет атрибута имени.

<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" xdt:Transform="SetAttributes"></serviceMetadata> 
+0

Я сделал еще одну ошибку, используя «setAttributes» вместо «SetAttributes». – YoYoMyo

+0

Правильно, его чувствительный к регистру. Я обновил свой ответ. – jrummell

+0

Знаете ли вы, как добавить блок в web.config? Я попробовал InsertAfter ... но я думаю, что мой синтаксис неправильный. – YoYoMyo

Смежные вопросы