2009-07-25 5 views
4

Я пытаюсь добавить новую конечную точку в службу, размещенную под IIS, но не смог понять ее в течение прошедшего дня или около того.Несколько конечных точек в IIS

Это мое понимание:

  • вы можете иметь несколько конечных точек под IIS, если они имеют уникальные адреса.
  • вы можете назначить базовый адрес, но он будет переопределен настройкой виртуального каталога в IIS.

Мой виртуальный каталог http://localhost/WcfCert/

<services> 
    <service name="WcfCertServer.Service1" behaviorConfiguration="WcfCertServer.Service1Behavior"> 
    <endpoint address="" binding="wsHttpBinding" contract="WcfCertServer.IService1"/> 
    <endpoint address="test" binding="wsHttpBinding" contract="WcfCertServer.IService1"/> 
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 

Я могу вызвать службу, используя http://localhost/wcfcert/service1.svc

но http://localhost/wcfcert/test/service1.svc/test не возвращает ничего в IE или клиентское приложение

Что я отсутствует здесь?

Edit:

Так что я сделал дальнейшее тестирование, и вот что я обнаружил.

Если я запустил WcfTestClient.exe и добавлю либо http://localhost:1523/Service1.svc, либо http://localhost:1523/Service1.svc/mex, он добавит и конечную точку под этим адресом. так вот мой вопрос не должен http://localhost:1523/Service1.svc представляют только первую конечную точку? почему добавление этого адреса вызывает обе конечные точки?

но если я пытаюсь добавить http://localhost:1523/Service1.svc/test я

Error: Cannot obtain Metadata from http://localhost:1523/Service1.svc/test If this is a Windows (R) Communication Foundation service to which you have access, please check that you have enabled metadata publishing at the specified address. For help enabling metadata publishing, please refer to the MSDN documentation at http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:1523/Service1.svc/test Metadata contains a reference that cannot be resolved: ' http://localhost:1523/Service1.svc/test '. Sendera:BadContextToken The message could not be processed. This is most likely because the action ' http://schemas.xmlsoap.org/ws/2004/09/transfer/Get ' is incorrect or because the message contains an invalid or expired security context token or because there is a mismatch between bindings. The security context token would be invalid if the service aborted the channel due to inactivity. To prevent the service from aborting idle sessions prematurely increase the Receive timeout on the service endpoint's binding.HTTP GET Error URI: http://localhost:1523/Service1.svc/test There was an error downloading ' http://localhost:1523/Service1.svc/test '. The request failed with HTTP status 400: Bad Request.

+2

у меня аналогичная проблема, которую я хотел бы получить это решение. Единственное отличие от того, что вы описываете, что я получаю «400 Bad request» без текста. Я следую описанию на http://msdn.microsoft.com/en-us/library/ms733766.aspx, в котором говорится, что полученный URL-адрес будет переведен в ваш пример - http: //localhost/wcfcert/service1.svc/test. Для меня это тоже не работает. –

+0

URL-адрес не работает в IE (.../Service1.svc/test). Но создать прокси добавить ту же конечную точку он работает. Обратитесь к этому http://msdn.microsoft.com/en-us/library/ms751515(v=vs.110).aspx –

ответ

2

Было бы быть на самом деле:

http://localhost/wcfcert/service1.svc/test

Если вы хотите, чтобы URL, чтобы быть 'http://localhost/wcfcert/test/service1.svc', то вам нужно укажите полный URL-адрес в атрибуте адреса.

+0

Я попробовал оба, теперь я получаю «HTTP 400 Bad request». –

+0

@Keivan: Для второго варианта вы установили адрес = "http: //localhost/wcfcert/test/service1.svc" или просто оставьте его по адресу = "test"? Если вы хотите, чтобы URL-адрес был http: //localhost/wcfcert/test/service1.svc, вам необходимо убедиться, что вы указали полный адрес в атрибуте адреса. – jrista

+0

Я пробовал как «localhost/wcfcert/test/service1.svc», так и «localhost/wcfcert/service1.svc/test» –

0

Недавно я столкнулся с подобной проблемой, и я считаю, что причина в том, что WcfTestClient требует, чтобы конечная точка mex запрашивала метаданные для тестируемой службы.

Когда вы добавляете служебный адрес "http://localhost:1523/Service1.svc" в WcfTestClient, он фактически запрашивает конечную точку "http://localhost:1523/Service1.svc/mex", чтобы получить описание сервиса.

Ошибка «Не удается получить метаданные из "http://localhost:1523/Service1.svc/test" отображается, поскольку WcfTestClient ищет„/ тест/MEX“конечную точку, чтобы получить метаданные для службы в„/ тест“.

Чтобы это исправить, нужно добавить еще конечную точку для предоставления метаданных о службе размещенного по адресу «/ тест»:..

<endpoint address="/test/mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 

Это решение, которое работало для меня

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