Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# HTTP无法注册URL HTTP_C#_Wcf - Fatal编程技术网

C# HTTP无法注册URL HTTP

C# HTTP无法注册URL HTTP,c#,wcf,C#,Wcf,我已经使用Visual Studio 2017的WCF模板创建了一个测试服务。它使用以下应用程序配置文件创建库项目: <?xml version="1.0" encoding="utf-8" ?> <configuration> <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> </appSettings

我已经使用Visual Studio 2017的WCF模板创建了一个测试服务。它使用以下应用程序配置文件创建库项目:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>

  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- Al implementar el proyecto de la biblioteca de servicios, el contenido del archivo de configuración se debe agregar al archivo 
  app.config del host. La configuración del sistema no admite archivos de configuración en las bibliotecas. -->
  <system.serviceModel>
    <services>
      <service name="Dummy.Service1">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8733/Design_Time_Addresses/Dummy/Service1/" />
          </baseAddresses>
        </host>
        <!-- Service Endpoints -->
        <!-- A menos que esté completa, la dirección está en relación con la dirección base suministrada anteriormente -->
        <endpoint address="" binding="basicHttpBinding" contract="Dummy.IService1">
          <!-- 
              Antes de la implementación, se debe quitar o reemplazar el siguiente elemento de identidad para reflejar la 
              identidad bajo la que funciona el servicio implementado. Si se quita, WCF deducirá automáticamente una identidad 
               apropiada.
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <!-- Metadata Endpoints -->
        <!-- El servicio utiliza el extremo de intercambio de metadatos para describirse a sí mismo ante los clientes. --> 
        <!-- Este extremo no utiliza un enlace seguro, por lo que se debe proteger o quitar antes de la implementación -->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- Para evitar revelar información de los metadatos, 
          establezca los valores siguientes en false antes de la implementación -->
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
          <!-- Para recibir detalles de las excepciones en los fallos, con el fin de poder realizar la depuración, 
          establezca el valor siguiente en true. Para no revelar información sobre las excepciones 
          establézcalo en false antes de la implementación -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>

</configuration>
当我运行WPF应用程序时,我得到一个错误,即无法注册URL

我已经找到了一些解决方案

在sumary中,一个解决方案是使用管理员权限运行VisualStudio,另一个解决方案是使用netsh设置URL,但我想知道是否真的需要这样做,因为如果使用WCF模板创建的虚拟项目不需要这样做,因为服务是创建的

也许,就像虚拟项目一样,它是一个库项目,当我在VisualStudio中运行时,VisualStudio创建了一个自定义环境,然后它就可以运行了,但我想知道,在我的项目中,我是否真的可以解决这个问题,而不必使用netsh或以管理员权限运行


谢谢。

在visual studio中调试应用程序时,右键单击visual studio>以管理员身份运行>打开项目并运行服务。这是一个与特权相关的问题

并且在目标机器中使用cmd:


希望对大家有用

语句将释放服务主机对象,并且不会正确承载服务。此外,您必须至少选择一个以通过相应权限启用端口。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
    </startup>




  <!--WCF-->
  <appSettings>
    <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
  </appSettings>
  <system.web>
    <compilation debug="true" />
  </system.web>
  <!-- Al implementar el proyecto de la biblioteca de servicios, el contenido del archivo de configuración se debe agregar al archivo 
  app.config del host. La configuración del sistema no admite archivos de configuración en las bibliotecas. -->
  <system.serviceModel>
    <services>
      <service name="GestorAplicaciones.Wcf.Servicio.Net.GestorAplicacionesService">
        <host>
          <baseAddresses>
            <add baseAddress = "http://localhost:8733/GestorAplicaciones" />
          </baseAddresses>
        </host>
        <!-- Service Endpoints -->
        <!-- A menos que esté completa, la dirección está en relación con la dirección base suministrada anteriormente -->
        <endpoint address="" binding="basicHttpBinding" contract="GestorAplicaciones.Wcf.Comun.Net.IGestorAplicacionesService">
          <!-- 
              Antes de la implementación, se debe quitar o reemplazar el siguiente elemento de identidad para reflejar la 
              identidad bajo la que funciona el servicio implementado. Si se quita, WCF deducirá automáticamente una identidad 
               apropiada.
          -->
          <identity>
            <dns value="localhost"/>
          </identity>
        </endpoint>
        <!-- Metadata Endpoints -->
        <!-- El servicio utiliza el extremo de intercambio de metadatos para describirse a sí mismo ante los clientes. -->
        <!-- Este extremo no utiliza un enlace seguro, por lo que se debe proteger o quitar antes de la implementación -->
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <!-- Para evitar revelar información de los metadatos, 
          establezca los valores siguientes en false antes de la implementación -->
          <serviceMetadata httpGetEnabled="True" httpsGetEnabled="True"/>
          <!-- Para recibir detalles de las excepciones en los fallos, con el fin de poder realizar la depuración, 
          establezca el valor siguiente en true. Para no revelar información sobre las excepciones 
          establézcalo en false antes de la implementación -->
          <serviceDebug includeExceptionDetailInFaults="False" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
  </system.serviceModel>
  <!--FIN WCF-->
</configuration>
public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();


            using (_host = new ServiceHost(typeof(GestorAplicacionesService)))
            {
                _host.Open();
            }
        }



        private ServiceHost _host;
    }
netsh add urlacl url=http://+:8000/HelloWCF/ user=DOMAIN\user