2011-04-08 5 views
0

У меня есть конечная точка WCF внутри моего проекта .NET 4.0 Web Application. Используя тестовый клиент WCF VS2010, я могу подключиться к сервису правильно. Однако, когда я перехожу к использованию службы, я получаю общее сообщение об ошибке:Режим аутентификации = «Формы», вызывающие перенаправление в службе WCF

Тип контента text/html; charset = UTF-8 ответного сообщения не соответствует типу содержимого привязки (text/xml; charset = utf-8). Если вы используете пользовательский кодер, убедитесь, что метод IsContentTypeSupported реализован правильно. Первые 1024 байт ответа были:

Когда я смотрел на запросы на IIS Express я получил следующее:

Запрос начала: POST http://machinename:port/Services/Services.svc

Запрос начал: GET http://machinename:port/Services/Services.svc?AspxAutoDectectCookieSupport=1

Начато применение: GET http://machinename:port/(X(1)A(LKwosYYszAEkAAAAMDE2YzlmNWItNTZIOS00ZDY1LTgzOTAtNDIxNDgyOWZIYWViJ86TX46muUQoL_psmkZK2rgWbO41))/Services/Services.svc?AspxAutoDectectCookieSupport=1

Reque st закончился: «http: // machinename: port/Services/Services.svc» с HTTP-статусом 302.0

Запрашиваемый закон: «http: // machinename: port/Services/Services.svc? AspxAutoDectectCookieSupport = 1» с HTTP статус 302,0

Запрос закончилась: "HTTP: // имя_компьютера: порт/Услуги/Services.svc AspxAutoDectectCookieSupport = 1?" со статусом HTTP 200,0

Так что похоже после вывешивать на услугу он получает перенаправляется на стандартную веб-страницу службы. Тем не менее, когда я удаляю:

<authentication mode="Forms"> 
<forms cookieless="AutoDetect" loginUrl="~/Security/LoginClient.aspx" name="FORMAUTH" /> 

из web.config он работает. Любые идеи, что происходит? Я попытался удалить папку, в которой служба находится, от проверки подлинности (http://stackoverflow.com/questions/5593720/authentication-mode-forms-causing-errors-in-wcf-end-point), но проблема все еще остается.

Хотя это работает с использованием Visual Studio Development Server (Cassini), когда я запускаю его через IIS Express 7.5, такая же ошибка возникает с аутентификацией или без нее.

+0

Здравствуйте! По одной и той же проблеме. Вы нашли решение ? – user1147981

ответ

0

Я испытываю такую ​​же проблему, как только я использую имя машинного узла вместо localhost в служебном адресе. Я попытался использовать «baseAddressPrefixFilters», но безуспешно.

<serviceHostingEnvironment> 
    <baseAddressPrefixFilters> 
    <add prefix="http://XLSiteSampleD.aginsurance.intranet/PIXLSiteSample" /> 
    </baseAddressPrefixFilters> 
</serviceHostingEnvironment> 

Я думал, что вариант может быть для того, чтобы aspNetCompatibility в web.config с соответствующим атрибутом на службе: [AspNetCompatibilityRequirements (RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] Но не трюк либо :(

Он работает только с адресом, как http://localhost/VirtualSite/MyService.svc без домена и без baseAddressPrefixFilters!

V.

2

Вы должны предоставить разрешение на ваши веб-службы, чтобы связаться анонимно в вашем web.config:

<location path="MyWebServices"> 
    <system.web> 
     <authorization> 
      <allow users="*"/> 
     </authorization> 
    </system.web> 
</location> 

Это предполагает, что вы держите все свои услуги в папке MyWebServices относительно корня из заявление. Вы должны разрешить * или это заставит логин для доступа.

+0

Вот что я подумал, поэтому я спросил его здесь [http://stackoverflow.com/questions/5593720/authentication-mode-forms-causing-errors-in-wcf-end-point](http: //stackoverflow.com/questions/5593720/authentication-mode-forms-causing-errors-in-wcf-end-point), но, попробовав, что он все еще перенаправляет меня – SmudgerDan

+0

Не работает. Если в WCF возникают какие-либо проблемы, он по-прежнему перенаправляет на loginUrl по умолчанию. Я не думаю, что проблема заключается в том, чтобы разрешить некоторым пользователям WCF, но о том, «Как не перенаправлять на страницу входа по умолчанию, когда возникает исключение или что-то» – user1147981