Как получить доступ к Wcf? - PullRequest
       20

Как получить доступ к Wcf?

1 голос
/ 22 февраля 2011

Я пытаюсь получить некоторые данные через WCF.İ созданный ниже app.config.Но я лицом к лицу ниже

enter image description here

Большой PNG:

http://i54.tinypic.com/mjb9j4.png



<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- When deploying the service library project, the content of the config file must be added to the host's 
  app.config file. System.Configuration does not support config files for libraries. -->
  <system.serviceModel>
    <services>
      <service  name="WcfServiceLibrary.OnDomainModels.Message">
        <endpoint address="http://127.0.0.1:8731/MessageSrv" binding="wsHttpBinding" contract="WcfServiceLibrary.OnDomainModels.IData">
          <identity>
            <dns value="127.0.0.1" />
          </identity>
        </endpoint>
        <!--<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />-->
        <host>
          <baseAddresses>
            <add baseAddress="http://127.0.0.1:8731/Design_Time_Addresses/WcfServiceLibrary.OnDomainModels/Message/" />
          </baseAddresses>
        </host>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="WcfServiceLibrary.OnDomainModels.MessageBehavior">
          <!-- To avoid disclosing metadata information, 
          set the value below to false and remove the metadata endpoint above before deployment -->
          <serviceMetadata httpGetEnabled="True" />
          <!-- To receive exception details in faults for debugging purposes, 
          set the value below to true.  Set to false before deployment 
          to avoid disclosing exception information -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

Ошибка:

URL не может быть записан.У вас нет разрешения для доступа к этому пространству имен для вашего действия C #

Мой код WCf:


namespace WcfServiceLibrary.OnDomainModels
{
    [ServiceContract]
    public interface IData
    {
        [OperationContract]
        int GetData();
   }
}


   public class Message : IData
    {
  public int GetData()
        {
            using (entity MaintCtx = new entity ())
            {
                return MaintCtx.NonRoutineCard.Count();
            }
        }


Ответы [ 2 ]

1 голос
/ 22 февраля 2011

Вам необходимо предоставить надлежащий доступ учетной записи пользователя, под которой работает хост.Используйте netsh из командной строки

http://blogs.msdn.com/b/anirbanc/archive/2008/05/14/wcf-error-http-could-not-register-url-http-8000-your-process-does-not-have-access-rights-to-this-namespace.aspx

Вы можете запустить Visual Studio от имени администратора, но это не всегда работает.У меня было много проблем с этим на Windows 7.

0 голосов
/ 22 февраля 2011

Я посмотрел видео на WCF с этой точной ошибкой, и она так и не была объяснена.http://channel9.msdn.com/shows/Endpoint/Endpoint-Screencasts-Self-hosting-WCF-Services/

Для размещения службы WCF необходимы права администратора.

Для этого щелкните правой кнопкой мыши свой проект, добавьте новый элемент.Выберите файл манифеста приложения.

Это создаст базовый файл манифеста.

Вам необходимо, чтобы он содержал <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

Общий файл (сокращенный) будет выглядеть следующим образомthis

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
        <requestedExecutionLevel  level="requireAdministrator" uiAccess="false" />
      </requestedPrivileges>
    </security>
  </trustInfo>
</asmv1:assembly>

Вы можете привязать этот манифест к скомпилированному файлу .exe, если вам нужно, или просто оставить его в том же каталоге, что и выходные данные скомпилированного проекта (файл .exe).работает, потому что VS2010 будет запрашивать перезапуск с привилегиями администратора при попытке отладки.

...